Package | hl7.fhir.it.cda2fhir |
Type | StructureMap |
Id | Id |
FHIR Version | R4 |
Source | http://hl7.it/fhir/cda2fhir/https://build.fhir.org/ig/hl7-it/cda2fhir/StructureMap-cda2fhirPs.html |
Url | http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirPs |
Version | 0.1.0 |
Status | draft |
Date | 2025-03-28T14:53:59+00:00 |
Name | cda2fhirPs |
Experimental | False |
Realm | it |
Authority | hl7 |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
map "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirPs" = "cda2fhirPs" uses "http://hl7.org/fhir/cda/StructureDefinition/ClinicalDocument" alias ClinicalDocument as source uses "http://hl7.org/fhir/cda/StructureDefinition/AssignedAuthor" alias AssignedAuthor as queried uses "http://hl7.org/fhir/cda/StructureDefinition/AssignedEntity" alias AssignedEntity as queried uses "http://hl7.org/fhir/cda/StructureDefinition/AssociatedEntity" alias AssociatedEntity as queried uses "http://hl7.org/fhir/cda/StructureDefinition/CustodianOrganization" alias CustodianOrganization as queried uses "http://hl7.org/fhir/cda/StructureDefinition/OrganizationPartOf" alias OrganizationPartOf as queried uses "http://hl7.org/fhir/cda/StructureDefinition/Organization" alias rapresentedOrganization as queried uses "http://hl7.org/fhir/cda/StructureDefinition/Section" alias Section as queried uses "http://hl7.org/fhir/cda/StructureDefinition/PatientRole" alias PatientRole as queried uses "http://hl7.org/fhir/cda/StructureDefinition/AD" alias AD as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target uses "http://hl7.org/fhir/StructureDefinition/Composition" alias Composition as produced uses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as produced uses "http://hl7.org/fhir/StructureDefinition/Encounter" alias Encounter as produced uses "http://hl7.org/fhir/StructureDefinition/Person" alias Patient as produced uses "http://hl7.org/fhir/StructureDefinition/List" alias List as produced uses "http://hl7.org/fhir/StructureDefinition/Practitioner" alias Practitioner as produced uses "http://hl7.org/fhir/StructureDefinition/Organization" alias Organization as produced uses "http://hl7.org/fhir/cda/StructureDefinition/Act" alias Act as produced uses "http://hl7.org/fhir/cda/StructureDefinition/IVL-PQ" alias IVL_PQ as source uses "http://hl7.org/fhir/cda/StructureDefinition/PQ" alias PQ as source uses "http://hl7.org/fhir/StructureDefinition/SimpleQuantity" alias SimpleQuantity as target imports "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirDataTypes" imports "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirHeader" group CdaToBundle(source cda : ClinicalDocument, target bundle : Bundle) { cda -> bundle.entry as e, e.request = create('BackboneElement') as request, request.method = 'POST', e.resource = create('Composition') as composition, composition.id = uuid() as uuid1, e.fullUrl = append('https://example/Composition/', uuid1), request.url = 'Composition', bundle.entry as e2, e2.request = create('BackboneElement') as requestPAT, requestPAT.method = 'PUT', e2.resource = create('Patient') as patient, patient.id = uuid() as uuid2, e2.fullUrl = append('https://example/Patient/', uuid2), bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Encounter') as encounter, encounter.id = uuid() as uuid3, e3.fullUrl = append('https://example/Encounter/', uuid3), request.url = 'Encounter', bundle.entry as e4, e4.request = create('BackboneElement') as request, request.method = 'POST', e4.resource = create('DocumentReference') as DocumentReference, DocumentReference.id = uuid() as uuid4, e4.fullUrl = append('https://example/DocumentReference/', uuid4), request.url = 'DocumentReference' then { cda then ClinicalDocumentToBundle(cda, patient, composition, encounter, bundle, DocumentReference) "cdatobundle"; cda.recordTarget as recordTarget then { recordTarget.patientRole as patient then { patient.id as id -> patient.identifier as identifier then { id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; id.extension as ext1 -> identifier.value = ext1 "value"; id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s; } "idfr"; patient.id as id where (root = '2.16.840.1.113883.2.9.4.3.2') or (root = '2.16.840.1.113883.2.9.4.3.7') or (root = '2.16.840.1.113883.2.9.4.3.3') or (root = '2.16.840.1.113883.2.9.4.3.17') or (root = '2.16.840.1.113883.2.9.4.3.18') or (root = '2.16.840.1.113883.2.9.2.10.4.1.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1.1') or (root = '2.16.840.1.113883.2.9.2.10.4.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1') or (root = '2.16.840.1.113883.2.9.4.3.15') then { id.extension as ext -> requestPAT.url = append('Patient?identifier=', ext) "UUID"; } "ext"; } "recPat"; } "patient"; } "ClinicalDocumentToBody"; } group ClinicalDocumentToBundle(source cda : ClinicalDocument, target patient : Patient, target composition : Composition, target encounter : Encounter, target bundle : Bundle, target DocumentReference : DocumentReference) { cda -> encounter.status = 'finished' "finished"; cda -> encounter.class = create('Coding') as coding then { cda -> coding.code = 'summary' "code"; } "coding"; cda -> bundle.id = uuid() "id"; cda.id -> bundle.identifier "identifier"; cda -> bundle.type = 'transaction' "type"; // cda.effectiveTime -> bundle.timestamp; cda -> bundle.timestamp = (timestamp.now()) "date"; cda then ClinicalDocumentComposition(cda, composition, patient, encounter, bundle, DocumentReference) "composition"; cda.component as component then { component.structuredBody as body then { body.component as component then { component.section as srcSection then { srcSection.code -> composition.section as tgtSection then ClinicalDocumentSection(cda, srcSection, patient, tgtSection, bundle, encounter, composition); }; }; } "body"; } "diagnostic"; } group ClinicalDocumentSection(source cda : ClinicalDocument, source src : Section, target patient : Patient, target tgt, target bundle : Bundle, target enc : Encounter, target composition : Composition) { src.title as t -> tgt.title = (t.dataString); src.code -> tgt.code; src.entry as entry then { src.text as cdaText -> tgt.text as fhirText then { cdaText -> fhirText.status = 'generated' "narrativeStatus"; cdaText as t -> fhirText.div = t "narrativeText"; } "cdaText"; // sezioni che sono strutturate src.code where (code = '30954-2') then { entry.organizer as organizer -> bundle.entry as e0, e0.request = create('BackboneElement') as request, request.method = 'POST', e0.resource = create('DiagnosticReport') as dia, dia.id = uuid() as uuid0, e0.fullUrl = append('https://example/DiagnosticReport/', uuid0), request.url = 'DiagnosticReport', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/DiagnosticReport/' + %dia.id) then DiagnosticReportFunction(organizer, patient, enc, dia, bundle) "diagnostic"; } "entryObs"; src.code where (code = '29762-2') or (code = '10162-6') then { entry.observation as observation -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as obs1, obs1.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then Observation(observation, patient, enc, obs1, bundle) "obs1"; } "entryObs"; src.code where (code = '8716-3') or (code = '47420-5') then { entry.organizer as organizer -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'POST', e2.resource = create('Observation') as obs2, obs2.id = uuid() as uuid2, e2.fullUrl = append('https://example/Observation/', uuid2), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs2.id) then ObservationOrganizer(src, organizer, patient, enc, obs2, bundle) "obs2"; entry.observation as organizer -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'POST', e2.resource = create('Observation') as obs2, obs2.id = uuid() as uuid2, e2.fullUrl = append('https://example/Observation/', uuid2), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs2.id) then ObservationOrganizer(src, organizer, patient, enc, obs2, bundle) "obs2"; } "organizer"; src.code where code = '11450-4' then { entry.act as act -> bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Condition') as condition, condition.id = uuid() as uuid3, e3.fullUrl = append('https://example/Condition/', uuid3), request.url = 'Condition', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Condition/' + %condition.id) then ConditionFunction(act, condition, patient, enc, bundle) "condition"; } "listaDeiProblemi"; src.code where (code = '48765-2') then { entry.act as act -> bundle.entry as e5, e5.request = create('BackboneElement') as request, request.method = 'POST', e5.resource = create('AllergyIntolerance') as allergy, allergy.id = uuid() as uuid5, e5.fullUrl = append('https://example/AllergyIntolerance/', uuid5), request.url = 'AllergyIntolerance', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/AllergyIntolerance/' + %allergy.id) then allergyFunction(act, allergy, patient, enc) "allergy"; } "entryAct"; src.code where code = '10160-0' then { entry.substanceAdministration as subAdmin -> bundle.entry as e6, e6.request = create('BackboneElement') as request, request.method = 'POST', e6.resource = create('MedicationStatement') as medicationstatement, medicationstatement.id = uuid() as uuid6, e6.fullUrl = append('https://example/MedicationStatement/', uuid6), request.url = 'MedicationStatement', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/MedicationStatement/' + %medicationstatement.id) then MedicationStatement(subAdmin, medicationstatement, patient, enc, bundle) "TerapiaFarmacologica"; } "terapia"; src.code where code = '11369-6' then { entry.substanceAdministration as subVACC -> bundle.entry as e7, e7.request = create('BackboneElement') as request, request.method = 'POST', e7.resource = create('Immunization') as immunization, immunization.id = uuid() as uuid7, e7.fullUrl = append('https://example/Immunization/', uuid7), request.url = 'Immunization', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Immunization/' + %immunization.id) then Immunization(subVACC, patient, enc, immunization, bundle) "immunization"; } "vacc"; src.code where code = '10157-6' then { entry.organizer as organizer -> bundle.entry as e12, e12.request = create('BackboneElement') as request, request.method = 'POST', e12.resource = create('FamilyMemberHistory') as familyMember, familyMember.id = uuid() as uuid12, e12.fullUrl = append('https://example/FamilyMemberHistory/', uuid12), request.url = 'FamilyMemberHistory', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/FamilyMemberHistory/' + %familyMember.id) then FamilyMemberFunction(organizer, familyMember, patient) "family"; } "family"; src.code where code = '46264-8' then { entry.supply as supply -> bundle.entry as e8, e8.request = create('BackboneElement') as request, request.method = 'POST', e8.resource = create('Procedure') as procedure, procedure.id = uuid() as uuid8, e8.fullUrl = append('https://example/Procedure/', uuid8), request.url = 'Procedure', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Procedure/' + %procedure.id) then Procedure(supply, patient, enc, procedure, bundle) "protesi"; } "impianti"; src.code where code = '47519-4' then { entry.procedure as procedure -> bundle.entry as e9, e9.request = create('BackboneElement') as request, request.method = 'POST', e9.resource = create('Procedure') as procedure2, procedure2.id = uuid() as uuid9, e9.fullUrl = append('https://example/Procedure/', uuid9), request.url = 'Procedure', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Procedure/' + %procedure2.id) then Procedure(procedure, patient, enc, procedure2, bundle) "tratt"; } "trattamentiProcedure"; src.code where code = '46240-8' then { // entry.encounter as encounter -> enc then{ entry.encounter as encounter -> bundle.entry as e9, e9.request = create('BackboneElement') as request, request.method = 'POST', e9.resource = create('Encounter') as encounterF, encounterF.id = uuid() as uuid9, e9.fullUrl = append('https://example/Encounter/', uuid9), request.url = 'Encounter', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounterF.id) then EncounterFunction(encounter, patient, enc, encounterF, bundle); } "visiteRicoveri"; src.code where code = '57827-8' then { entry.act as act -> bundle.entry as e13, e13.request = create('BackboneElement') as request, request.method = 'POST', e13.resource = create('Coverage') as coverage, coverage.id = uuid() as uuid13, e13.fullUrl = append('https://example/Coverage/', uuid13), request.url = 'Coverage', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Coverage/' + %coverage.id) then Coverage(act, patient, enc, coverage, bundle) "esen"; } "esenzioni"; src.code where code = 'PSSIT99' then { entry.act as act -> bundle.entry as e14, e14.request = create('BackboneElement') as request, request.method = 'POST', e14.resource = create('OrganizationAffiliation') as affiliation, affiliation.id = uuid() as uuid14, e14.fullUrl = append('https://example/OrganizationAffiliation/', uuid14), request.url = 'OrganizationAffiliation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/OrganizationAffiliation/' + %affiliation.id) then OrganizationAffiliation(act, patient, enc, affiliation, bundle) "OrgAffiliation"; } "retiPatologia"; }; src where src.entry.exists() then { src.code where code = '18776-5' then { src -> bundle.entry as e11, e11.request = create('BackboneElement') as request, request.method = 'POST', e11.resource = create('CarePlan') as careplan, careplan.id = uuid() as uuid11, e11.fullUrl = append('https://example/CarePlan/', uuid11), request.url = 'CarePlan', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/CarePlan/' + %careplan.id) then { src.entry as entry then CarePlanFunction(entry, careplan, patient, enc, bundle) "prestazioni"; } "pianiCura"; } "raccoglitore"; } "esiste"; src where src.entry.exists().not() then { // Anmanesi Familiare narrativa src.code where code = '10157-6' then { src.text as text -> bundle.entry as e12, e12.request = create('BackboneElement') as request, request.method = 'POST', e12.resource = create('FamilyMemberHistory') as familyMember, familyMember.id = uuid() as uuid12, e12.fullUrl = append('https://example/FamilyMemberHistory/', uuid12), request.url = 'FamilyMemberHistory', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/FamilyMemberHistory/' + %familyMember.id) then { src -> familyMember.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; src -> familyMember.status = 'health-unknown' "statusS"; text -> familyMember.note as note then { text as t -> note.text = t "reference"; } "reference"; text -> familyMember.relationship = create('CodeableConcept') as relation then { text as txt -> relation.text = txt "text"; } "medication"; } "family"; } "familyraccoglitore"; // Piano di cura narrativa src.code where code = '18776-5' then { src.text as text -> bundle.entry as e11, e11.request = create('BackboneElement') as request, request.method = 'POST', e11.resource = create('CarePlan') as careplan, careplan.id = uuid() as uuid11, e11.fullUrl = append('https://example/CarePlan/', uuid11), request.url = 'CarePlan', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/CarePlan/' + %careplan.id) then { src -> careplan.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src-> careplan.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) "reference"; src -> careplan.status = 'active' "status"; src -> careplan.intent = 'order' "intent"; text -> careplan.note as note then { text as t -> note.text = t "reference"; } "reference"; } "pianiCura"; } "raccoglitore"; // sezioni che sono narrative src.code where (code = '30954-2') or (code = '29762-2') or (code = '8716-3') or (code = '47420-5') or (code = '42348-3') then { src.text as text -> bundle.entry as e13, e13.request = create('BackboneElement') as request, request.method = 'POST', e13.resource = create('Observation') as obs1, obs1.id = uuid() as uuid13, e13.fullUrl = append('https://example/Observation/', uuid13), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then { src -> obs1.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> obs1.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) "reference"; src -> obs1.status = 'preliminary' "obsst"; src.code -> obs1.code "obscde"; src -> obs1.status = 'final' "statusS"; text -> obs1.note as note then { text as t -> note.text = create('string') as textNote then EDstring(t, textNote) "note"; } "narrative"; } "txtsec"; } "narrative"; } "code"; src.component as component then { component.section as sec -> tgt.section as tgtSection then ClinicalDocumentSection(cda, sec, patient, tgtSection, bundle, enc, dReport); }; } group Procedure(source src : cdaElement, target patient : Patient, target encounter : Encounter, target tgt : Procedure, target bundle : Bundle) { // toASK src.text as tx -> tgt.note as note then { tx.reference as reff -> note.text = (reff.value) "r"; } "tx"; src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.10.3' then { src.effectiveTime as effectiveTime -> tgt.performed = (effectiveTime.value); src.code -> tgt.code; } "ref"; src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; src.statusCode as s then { s.code as cos -> tgt.status = translate(cos, '#EventStatus', 'code') "codeS"; } "status"; src where statusCode.exists().not() -> tgt.status = 'unknown' "status2"; src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.9.1' then { src -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Device') as deviceRes, deviceRes.id = uuid() as uuid1, e1.fullUrl = append('https://example/Device/', uuid1), request.url = 'Device', tgt.usedReference = create('Reference') as reference, reference.reference = ('https://example/Device/' + %deviceRes.id) then { src -> deviceRes.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; src.code -> deviceRes.type; } "device"; src.effectiveTime as effectiveTime where (value.exists()) -> tgt.performed = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; src.effectiveTime as effectiveTime where (low.exists()) -> tgt.performed = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; } "presenzaProtesiImpianto"; src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.9.2' then { src.code as code -> tgt.note as note then { code.displayName as displayName -> note.text = (displayName) "text"; } "note"; } "assenza"; src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.11.1' then { src.id -> tgt.identifier; src.code -> tgt.code; src.effectiveTime as effectiveTime where (value.exists()) -> tgt.performed = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; src.effectiveTime as effectiveTime where (low.exists()) -> tgt.performed = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; src.entryRelationship as entryR then { entryR.observation as observation -> bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Observation') as obs1, obs1.id = uuid() as uuid3, e3.fullUrl = append('https://example/Observation/', uuid3), request.url = 'Observation', tgt.reasonReference = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then Observation(observation, patient, encounter, obs1, bundle); } "entryRelProcedure"; } "procedureTrattamenti"; } group Observation(source cda, target patient : Patient, target encounter : Encounter, target ob : Observation, target bundle : Bundle) { cda -> ob.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // cda-> ob.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; cda.id -> ob.identifier; cda.code -> ob.code; cda -> ob.status = 'final' "Stats"; // value datatype cda.value : ST as st -> ob.value = create('string'), ob.value = (st.dataString); cda.value : BL as boolean -> ob.value = (boolean.value) "boolean"; cda.value : INT as int -> ob.value = (int.value) "intval"; cda.value : CE as val then { val -> ob.value = create('CodeableConcept') as ce then { val.originalText as originalText then { originalText.reference as reference -> ce.text = (reference.value); }; val -> ce.coding as coding then { val.code as code -> coding.code = cast(code, 'string'); val.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); val.displayName as display -> coding.display = cast(display, 'string'); } "code"; val.translation as translation -> ce.coding as coding then { translation.code as code -> coding.code = cast(code, 'string'); translation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); translation.displayName as display -> coding.display = cast(display, 'string'); translation.qualifier as qualifier then { qualifier.value as value -> ce.coding as coding then { value.code as code -> coding.code = cast(code, 'string'); value.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); value.displayName as display -> coding.display = cast(display, 'string'); }; }; }; } "coding"; } "val"; cda.value : CD as val then { val -> ob.value = create('CodeableConcept') as ce then { val.originalText as originalText then { originalText.reference as reference -> ce.text = (reference.value); }; val -> ce.coding as coding then { val.code as code -> coding.code = cast(code, 'string'); val.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); val.displayName as display -> coding.display = cast(display, 'string'); } "code"; val.translation as translation -> ce.coding as coding then { translation.code as code -> coding.code = cast(code, 'string'); translation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); translation.displayName as display -> coding.display = cast(display, 'string'); translation.qualifier as qualifier then { qualifier.value as value -> ce.coding as coding then { value.code as code -> coding.code = cast(code, 'string'); value.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); value.displayName as display -> coding.display = cast(display, 'string'); }; }; }; } "coding"; } "val"; cda.value : PQ as val then { val -> ob.value = create('Quantity') as quantity then { val.value as value -> quantity.value = value; val.unit as unit -> quantity.unit = unit; } "quantity"; } "valueQuantity"; cda.effectiveTime as effectiveTime where (value.exists()) -> ob.effective = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; cda.effectiveTime as effectiveTime where (low.exists()) -> ob.effective = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; cda.text as text -> ob.note as note then { text.reference as reference -> note.text = (reference.value) "text"; } "note"; cda.statusCode as s then { s.code as cos -> ob.status = translate(cos, '#OBSstatus', 'code') "codeS"; } "status"; // toASK è giusto siano invertiti? cda.methodCode -> ob.method; cda.interpretationCode -> ob.interpretation; cda.targetSiteCode -> ob.bodySite; // added cda.referenceRange as refrange then { refrange.observationRange as obsrange then { obsrange.value as val -> ob.referenceRange = create('BackboneElement') as refrangeFH then { val -> refrangeFH.low = create('SimpleQuantity') as lowfhir then { val.low as l -> lowfhir.value = (l.value) "val"; val.low as l -> lowfhir.unit = (l.unit) "val"; } "de"; val -> refrangeFH.high = create('SimpleQuantity') as highfhir then { val.high as h -> highfhir.value = (h.value) "val"; val.high as h -> highfhir.unit = (h.unit) "val"; } "de"; } "refFhir"; } "obsrange"; } "regrange"; } group ObservationOrganizer(source section : section, source cda : organizer, target patient : Patient, target encounter : Encounter, target ob : Observation, target bundle : Bundle) { cda -> ob.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // cda-> ob.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; cda.id -> ob.identifier; section.code -> ob.code; cda -> ob.status = 'final' "Stats"; cda.effectiveTime as effectiveTime where (value.exists()) -> ob.effective = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; cda.effectiveTime as effectiveTime where (low.exists()) -> ob.effective = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; cda.text as text -> ob.note as note then { text.reference as reference -> note.text = (reference.value) "text"; } "note"; cda.statusCode as s then { s.code as cos -> ob.status = translate(cos, '#OBSstatus', 'code') "codeS"; } "status"; cda.component as component then { component.observation as observation -> bundle.entry as ei, ei.request = create('BackboneElement') as request, request.method = 'POST', ei.resource = create('Observation') as obsi, obsi.id = uuid() as uuidi, ei.fullUrl = append('https://example/Observation/', uuidi), request.url = 'Observation', ob.hasMember = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obsi.id) then Observation(observation, patient, encounter, obsi, bundle) "hasMember"; }; } group Coverage(source src : act, target patient : Patient, target encounter : Encounter, target tgt : Coverage, target bundle : Bundle) { src -> tgt.beneficiary = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; src -> tgt.payor = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; src.id as id -> tgt.identifier as idf then { id -> idf.value = (id.root) "ID"; }; src.code -> tgt.type; src.statusCode as statusCode then { statusCode.code as s -> tgt.status = translate(s, '#FinancialStatus', 'code') "status"; } "sc"; src where statusCode.exists().not() -> tgt.status = 'active' "statusAbsent"; // src.effectiveTime as effectiveTime -> tgt.period as period then{ src.effectiveTime as effectiveTime where (value.exists()) -> tgt.period = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; src.effectiveTime as effectiveTime where (low.exists()) -> tgt.period = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; src.entryRelationship as entryRelationship then { entryRelationship.act as ac -> tgt.class as class then { ac.text as text -> class.type as type then { text.reference as reference -> type.text = (reference.value) "value"; } "ref"; ac -> class.value = 'commenti' "note"; } "QUI"; } "entryr"; } group allergyFunction(source src : cdaElement, target tgt : AllergyIntolerance, target patient : Patient, target encounter : Encounter) { src -> tgt.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; src.effectiveTime as effTime then { effTime.low as l -> tgt.recordedDate as r then TSDateTime(l, r) "value"; } "efftime"; src.entryRelationship as entryRelationship1 then { entryRelationship1.observation as observation1 then { observation1.id -> tgt.identifier; observation1.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.1.4' -> tgt.code as code then { observation1 -> code.coding as coding then { observation1 -> coding.code = 'No known allergy' "code"; } "code"; src.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; src.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; } "Noallergy"; observation1.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; observation1.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; observation1.value as code then { code.code as code1 -> tgt.type = translate(code1, '#AllergyTypeMap', 'code') "type"; code.code as code1 -> tgt.category = translate(code1, '#AllergyCategoryMap', 'code') "category"; } "code"; // toASK qui dovrei fare un controllo sul code observation1.value -> tgt.code; observation1.participant as participant -> tgt.reaction as reaction then { observation1.entryRelationship as entryRelationship2 where (typeCode = 'MFST') then { entryRelationship2.observation as observation2 then { observation2.value -> reaction.manifestation "manifestation"; observation2.code -> reaction.manifestation "manifestation"; observation2.text as tx then { tx.reference as reff -> reaction.description = (reff.value) "tx"; } "tx"; observation2.effectiveTime as effectiveTime then { effectiveTime.low as low -> reaction.onset = create('dateTime') as value then TSDateTime(low, value) "valuePeriodLow"; effectiveTime.high as high -> tgt.lastOccurrence = create('dateTime') as value then TSDateTime(high, value) "valuePeriodHigh"; } "low"; } "observ2"; } "entryR2"; participant.participantRole as participantRole then { participantRole.playingEntity as playingEntity then { playingEntity.code -> reaction.substance "reaction"; }; }; }; observation1.entryRelationship as entryRelationship2 where (typeCode = 'MFST') then { entryRelationship2.observation as observation2 where observation1.participant.exists().not() -> tgt.reaction as reaction then { observation2.value -> reaction.manifestation "manifestation"; observation2.text as tx then { tx.reference as reff -> reaction.description = (reff.value) "tx"; } "tx"; observation2.effectiveTime as effectiveTime then { effectiveTime.low as low -> reaction.onset = create('dateTime') as value then TSDateTime(low, value) "valuePeriodLow"; } "low"; } "observ2"; } "entryR2"; observation1.entryRelationship as entryRelationship3 where (typeCode = 'SUBJ') then { entryRelationship3.observation as observation3 then { observation3.value as value then { value.code as c -> tgt.criticality = translate(c, '#CricalityMap', 'code') "value"; } "criticality"; } "observ3"; entryRelationship3.act as act -> tgt.note as note then { act.text as text then { text.reference as reference -> note.text = (reference.value); } "note"; }; } "entryR3"; observation1.entryRelationship as entryRelationship4 where (typeCode = 'REFR') then { entryRelationship4.observation as observation4 then { observation4 -> tgt.clinicalStatus as clinicalStatus then { observation4.value as value then { value as valu -> clinicalStatus.coding = create('Coding') as coding then { valu where (code = 'LA9041-0') -> coding.code = 'resolved' "code"; valu where (code = 'LA18632-2') -> coding.code = 'inactive' "code"; valu where (code = 'LA16666-2') -> coding.code = 'active' "code"; valu -> coding.system = 'http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical' "system"; valu.displayName as display -> coding.display = cast(display, 'string') "display"; } "coding"; }; observation4.text as tx then { tx.reference as ref -> clinicalStatus.text = (ref.value); } "tx"; } "clinicalStatus"; } "observ4"; } "entryR4"; }; } "entryrelationship"; } group MedicationStatement(source src : substanceAdministration, target tgt : MedicationStatement, target patient : Patient, target encounter : Encounter, target bundle : Bundle) { src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> tgt.context = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; src.statusCode -> tgt.status "status"; src.id -> tgt.identifier; src.text as text -> tgt.note as note then { text.reference as reference -> note.text = (reference.value) "text"; } "note"; src.effectiveTime as eff where (value.exists()) -> tgt.effective = create('dateTime') as value then TSDateTime(eff, value) "value1"; src.effectiveTime : IVL_TS as eff -> tgt.effective = create('Period') as value then IVLTSPeriod(eff, value) "valuePeriod"; src -> tgt.dosage = create('Dosage') as dosage then { src.effectiveTime : PIVL_TS as eff then { eff -> dosage.timing = create('Timing') as timing then periodTiming(eff, timing) "cod"; } "eff"; src where (src.doseQuantity.exists() or src.rateQuantity.exists() or src.routeCode.exists() or src.approachSiteCode.exists()) then { src.doseQuantity as doseQuant then { doseQuant.originalText as ot then { ot.reference -> dosage.text; } "ot"; doseQuant -> dosage.doseAndRate as dosageRate then { doseQuant -> dosageRate.dose = create('Range') as d then { doseQuant -> d.low = create('SimpleQuantity') as l then { doseQuant.low as lo -> l.value = (lo.value); doseQuant.low as lo -> l.unit = (lo.unit); } "low"; doseQuant -> d.high = create('SimpleQuantity') as h then { doseQuant.high as hi -> h.value = (hi.value); doseQuant.high as hi -> h.unit = (hi.unit); } "low"; } "d"; } "dosageRate"; }; src.rateQuantity as rateQuantity then { rateQuantity.originalText as ot then { ot.reference -> dosage.text; } "ot"; rateQuantity -> dosage.doseAndRate as dosageRate then { rateQuantity -> dosageRate.rate = create('Range') as d then { rateQuantity -> d.low = create('SimpleQuantity') as l then { rateQuantity.low as lo -> l.value = (lo.value); rateQuantity.low as lo -> l.unit = (lo.unit); } "low"; rateQuantity -> d.high = create('SimpleQuantity') as h then { rateQuantity.high as hi -> h.value = (hi.value); rateQuantity.high as hi -> h.unit = (hi.unit); } "high"; } "r"; } "dosageRate"; } "rate"; src.routeCode -> dosage.route "route"; src.approachSiteCode -> dosage.site "site"; src.targetSiteCode -> dosage.site "site"; } "route"; } "dos"; src.consumable as consumable then { consumable.manufacturedProduct as manufacturedProduct -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Medication') as medication, medication.id = uuid() as uuid1, e1.fullUrl = append('https://example/Medication/', uuid1), request.url = 'Medication', tgt.medication = create('Reference') as medref, medref.reference = ('https://example/Medication/' + %medication.id) then Medication(src, medication, patient, bundle) "medication"; }; } group periodTiming(source effectiveTime : PIVL_TS, target timing : Timing) { effectiveTime -> timing.repeat as r then { effectiveTime.period as p -> r.period = (p.value); effectiveTime.period as p -> r.periodUnit = (p.unit); } "repeat"; } group Medication(source src : substanceAdministration, target tgt : Medication, target patient : Patient, target bundle : Bundle) { src.consumable as consumable then { consumable.manufacturedProduct as manufacturedProduct then { manufacturedProduct.manufacturedMaterial as manufacturedMaterial then { manufacturedMaterial.code -> tgt.code "CE"; src.administrationUnitCode -> tgt.form "form"; } "material"; } "product"; }; src.entryRelationship as entryR then { entryR.observation as observation then { observation.code where displayName = 'Grammatura' -> tgt.ingredient as ingredient then { src.consumable as consumable then { consumable.manufacturedProduct as manufacturedProduct then { manufacturedProduct.manufacturedMaterial as manufacturedMaterial then { manufacturedMaterial.code as code -> ingredient.item = create('CodeableConcept') as value then CECodeableConcept(code, value) "CE"; } "material"; } "product"; }; observation.value as value -> ingredient.strength as strength then { value -> strength.numerator as numerator then { value -> numerator.value = (value.value) "valueN"; } "numerator"; value -> strength.denominator as denominator then { value -> denominator.value = 1 "valueD"; } "denominator"; } "strenght"; } "ingredient"; observation.code where displayName = 'Quantità nella Confezione' then { observation.value as value -> tgt.amount as amount then { value -> amount.numerator as numerator then { value -> numerator.value = (value.value) "valueN"; } "numerator"; value -> amount.denominator as denominator then { value -> denominator.value = 1 "valueD"; } "denominator"; } "amount"; } "quantita"; } "obs"; } "entryR"; } group Immunization(source substance : substanceAdministration, target patient : Patient, target encounter : Encounter, target tgt : Immunization, target bundle : Bundle) { substance -> tgt.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "patientRef"; // substance -> tgt.encounter = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "encounterRef"; substance.id as id -> tgt.identifier as idf then { id.root as r -> idf.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; }; substance.text as text -> tgt.note as note then { text.reference as reference -> note.text = (reference.value) "text"; } "note"; substance.statusCode as statusc where (code = 'completed') -> tgt.status = 'completed'; substance.statusCode as statusc where (code = 'aborted') -> tgt.status = 'final'; substance.statusCode as statusc where (code = 'suspended') -> tgt.status = 'enterer-in-error'; substance.statusCode as statusc where (code = 'cancelled') -> tgt.status = 'not-done'; substance.effectiveTime as time -> tgt.occurrence = create('dateTime') as value then TSDateTime(time, value) "efftime"; substance.routeCode -> tgt.route; substance.approachSiteCode -> tgt.site; substance -> tgt.doseQuantity = create('SimpleQuantity') as quantity then { substance.doseQuantity as q then { q -> quantity.value = (q.value) "val"; q -> quantity.unit = (q.unit) "uni"; } "qua"; } "q"; substance.consumable as cons then { cons.manufacturedProduct as manufact then { manufact.manufacturedMaterial as manufactmat then { manufactmat.code -> tgt.vaccineCode; manufactmat.lotNumberText as t -> tgt.lotNumber = (t.dataString); } "manufactmat"; manufact.manufacturerOrganization as manufactOrg -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'PUT', e1.resource = create('Organization') as organization then { manufactOrg.id as id -> organization.identifier as identifier then { id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; id.extension as ext -> identifier.value = ext then { manufactOrg -> request.url = append('Organization?identifier=', ext) "UUID"; } "ext"; id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s; id.root as r then { id.extension as ext -> organization.id = (r + '-' + ext) as uuid, e1.fullUrl = append('https://example/', uuid), tgt.manufacturer = create('Reference') as reference, reference.reference = ('https://example/' + %organization.id) "idasi"; } "r"; } "identifier"; manufactOrg.name as n -> organization.name = (n.other); manufactOrg -> organization.meta as meta then { manufactOrg -> meta.tag = create('Coding') as coding then { manufactOrg -> coding.system = 'http://algoritmodiscoring' "system"; manufactOrg -> coding.code = 'ClinicalDocument/body/Vaccinazioni/manufacturerOrganization' "code"; } "coding"; } "meta"; } "manufactOrg"; } "manufact"; } "cons"; substance.participant as part -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'PUT', e1.resource = create('Location') as location, location.id = uuid() as uuid1 then { part -> location.meta as meta then { part -> meta.tag = create('Coding') as coding then { part -> coding.system = 'http://algoritmodiscoring' "system"; part -> coding.code = 'ClinicalDocument/body/Vaccinazione/participant' "code"; } "coding"; } "meta"; part.participantRole as partRole then { partRole.id as id -> location.identifier as identifier then { id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; id.extension as ext -> identifier.value = ext then { partRole -> request.url = append('Location?identifier=', ext) "UUID"; } "ext"; id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s; id.root as r then { id.extension as ext -> location.id = (r + '-' + ext) as uuid, e1.fullUrl = append('https://example/Location', uuid), tgt.location = create('Reference') as reference, reference.reference = ('https://example/' + %location.id) "idasi"; } "r"; } "identifier"; } "role"; } "part"; substance.entryRelationship as entrirel1 then { entrirel1.observation as obs then { obs.code where (code = '30973-2') then { obs -> tgt.protocolApplied = create('BackboneElement') as prot then { obs.value as v then { v.value as int -> prot.doseNumber = (int.toString()); }; } "val"; } "codecontrol"; } "obs"; } "entrirel1"; substance.entryRelationship as entrirel2 then { entrirel2.observation as obs then { obs.code where (code = '59781-5') then { obs.value as value then { value.high as h then { h.value as value -> tgt.expirationDate = truncate(value, 10); } "val"; }; } "codecontrol"; } "obs"; } "entrirel2"; substance.entryRelationship as entrirel4 then { entrirel4.observation as obs then { obs.code where (code = '59785-6') -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as observation, observation.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', tgt.reasonReference = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %observation.id) then { obs then Observation1(entrirel4, patient, tgt, bundle, enc, observation) "observation"; } "codecontrol"; } "obs"; } "entrirel4"; substance.entryRelationship as entrirel5 then { entrirel5.observation as obs then { obs.code where (code = '75321-0') or (code = '5321-0') -> tgt.reaction as reaction then { obs -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as observation, observation.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', reaction.detail = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %observation.id) then Observation(obs, patient, encounter, observation, bundle) "observation"; } "codecontrol"; } "obs"; } "entrirel5"; substance.entryRelationship as entrirel5 then { entrirel5.act as act then { act.text as tx -> tgt.note as note then { tx.reference as reference -> note.text = (reference.value) "text"; } "note"; } "obs"; } "entrirel5"; } group ConditionFunction(source src : cdaElement, target tgt : Condition, target patient : patient, target encounter : encounter, target bundle : Bundle) { src.id -> tgt.identifier; src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; src.statusCode as stscode -> tgt.verificationStatus as verifstatus then { stscode as codeS -> verifstatus.coding = create('Coding') as coding then { codeS.code -> coding.code = 'confirmed'; codeS -> coding.system = 'http://terminology.hl7.org/CodeSystem/condition-ver-status' "system"; codeS -> coding.display = cast('Confirmed', 'string') "display"; } "coding"; } "verifstatus"; src where entryRelationship.exists().not() then { src.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; src.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; } "onset"; src.entryRelationship as entryRelationship then { entryRelationship.observation as obsentry then { // toASK obsentry.value -> tgt.code; obsentry.code -> tgt.category; obsentry.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1"; obsentry.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; obsentry.text as text -> tgt.note as note then { text.reference as reference -> note.text = (reference.value) "text"; } "note"; obsentry.entryRelationship as entryR2 then { entryR2.observation as obsentry2 then { obsentry2.code where code = '89261-2' then { obsentry2 -> tgt.evidence as evidence, bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as obsy, obsy.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', evidence.detail = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obsy.id) then Observation(obsentry2, patient, encounter, obsy, bundle) "observation"; } "observation"; obsentry2.code where code = '33999-4' then { obsentry2.value as value -> tgt.clinicalStatus as clinicalstatus then { value as val -> clinicalstatus.coding = create('Coding') as coding then { val where (code = 'LA9041-0') -> coding.code = 'resolved' "code"; val where (code = 'LA18632-2') -> coding.code = 'inactive' "code"; val where (code = 'LA16666-2') -> coding.code = 'active' "code"; val -> coding.system = 'http://terminology.hl7.org/CodeSystem/condition-clinical' "system"; val.displayName as display -> coding.display = cast(display, 'string') "display"; } "coding"; obsentry2.text as text then { text.reference as reference -> clinicalstatus.text = (reference.value) "text"; }; } "clinicalstatus"; } "clinicalStatus2"; obsentry2.code where code = 'SEV' then { obsentry2.value -> tgt.severity; } "severity"; }; entryR2.act as act then { act.text as text -> tgt.note as note then { text.reference as reference -> note.text = (reference.value) "text"; } "note"; }; } "entryR"; } "EntryRelObsevation"; } "entryR"; } group FamilyMemberFunction(source src : organizer, target tgt : FamilyMemberHistory, target patient : patient) { src -> tgt.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "patReference"; src.id -> tgt.identifier; src.statusCode -> tgt.status; src.effectiveTime as effectiveTime -> tgt.date = create('date') as value then TSDate(effectiveTime, value) "date"; src.subject as subject then { subject.relatedSubject as relatedSubject then { relatedSubject.code -> tgt.relationship "relationshipCode"; relatedSubject.subject as subject -> tgt.sex as sex then { subject.administrativeGenderCode as administrativeGenderCode -> sex.coding as coding then { administrativeGenderCode.code as sexCode -> coding.code = translate(sexCode, '#cm-v3-administrative-gender', 'code') "gender"; administrativeGenderCode -> coding.system = 'http://hl7.org/fhir/administrative-gender' "system"; administrativeGenderCode.displayName as dn -> coding.display = dn; } "coding"; }; } "relatedSub"; } "relationship"; src.component as component -> tgt.condition as condition then { component.observation as observation then { observation.code -> condition.code; observation.text as text -> tgt.note as note then { text.reference as reference -> note.text = (reference.value) "value"; } "reference"; observation.statusCode -> tgt.status; // observation.effectiveTime as effectiveTime -> condition.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; observation.value -> condition.outcome "codeable"; observation.entryRelationship as entryR then { entryR.observation as obs then { obs where (code.code = '35267-4') then { obs.value as value -> condition.onset = create('Age') as Age then { value.value as valueAge -> Age.value = valueAge "age"; value.unit as unit -> Age.code = unit; value.unit as unit -> Age.unit = unit; value -> Age.system = 'http://unitsofmeasure.org' "system"; }; } "insorgenza"; obs where (code.code = '39016-1') then { obs.value as value -> tgt.deceased = create('Age') as Age then { value.value as valueAge -> Age.value = valueAge "age"; value.unit as unit -> Age.code = unit; value.unit as unit -> Age.unit = unit; value -> Age.system = 'http://unitsofmeasure.org' "system"; }; } "death"; } "obser"; } "EntryRel"; }; }; } group Practitioner(source src : performer, target tgt : Encounter, target bundle : Bundle) { src -> bundle.entry as e22, e22.request = create('BackboneElement') as request, request.method = 'PUT', e22.resource = create('Practitioner') as practitioner1 then { src.assignedEntity as assignedEntity -> tgt.participant as participant then { src.time as time where (value.exists()) -> participant.period = create('dateTime') as value then TSDateTime(time, value) "value1"; src.time as time where (low.exists()) -> participant.period = create('Period') as value then IVLTSPeriod(time, value) "valuePeriod"; // src.time as time -> participant.period as period then{ assignedEntity.id as id -> practitioner1.identifier as identifier then { id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; id.extension as ext -> identifier.value = ext "ext"; id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s; id.root as r then { id.extension as ext -> practitioner1.id = (r + '-' + ext) as uuid22, e22.fullUrl = append('https://example/Practitioner/', uuid22), participant.individual = create('Reference') as reference, reference.reference = ('https://example/Practitioner/' + %practitioner1.id) "id"; } "r"; } "identifier"; assignedEntity.id as id where (root = '2.16.840.1.113883.2.9.4.3.2') then { id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID"; } "2"; assignedEntity.id as id where (root != '2.16.840.1.113883.2.9.4.3.2') then { id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID"; } "diverso"; assignedEntity -> practitioner1.meta as meta then { src -> meta.tag = create('Coding') as coding then { src -> coding.system = 'http://algoritmodiscoring' "system"; src -> coding.code = 'ClinicalDocument/body/VisiteRicoveri/performer/' "code"; } "coding"; } "meta"; assignedEntity.addr -> practitioner1.address; assignedEntity.telecom -> practitioner1.telecom; assignedEntity.assignedPerson as person then { person.name -> practitioner1.name; person.birthTime -> practitioner1.birthDate; } "partname"; } "participant"; } "resurceCreation"; } group CarePlanFunction(source src : entry, target tgt : CarePlan, target patient : Patient, target encounter : Encounter, target bundle : Bundle) { src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; src -> tgt.status = 'unknown' "status"; src -> tgt.intent = 'plan' "intent"; src -> tgt.activity as activity then { src -> activity.detail as detail then { src.observation as observation then { observation then { observation -> detail.status = 'unknown' "status"; observation -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as obs1, obs1.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', detail.reasonReference = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then Observation(observation, patient, encounter, obs1, bundle) "obs1"; } "activity"; } "entryObs"; src.substanceAdministration as substanceAdministration -> tgt.activity as activity then { substanceAdministration -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'POST', e2.resource = create('MedicationRequest') as medre1, medre1.id = uuid() as uuid2, e2.fullUrl = append('https://example/MedicationRequest/', uuid2), request.url = 'MedicationRequest', activity.reference = create('Reference') as reference, reference.reference = ('https://example/MedicationRequest/' + %medre1.id) then MedicationRequest(substanceAdministration, patient, encounter, medre1, bundle) "Terapie"; } "entrySub"; src.procedure as procedureC -> bundle.entry as e8, e8.request = create('BackboneElement') as request, request.method = 'POST', e8.resource = create('Procedure') as procedure, procedure.id = uuid() as uuid8, e8.fullUrl = append('https://example/Procedure/', uuid8), request.url = 'Procedure', activity.outcomeReference = create('Reference') as reference, reference.reference = ('https://example/Procedure/' + %procedure.id) then Procedure(procedureC, patient, encounter, procedure, bundle) "proc"; src.encounter as encounterCDA -> bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Encounter') as encounterFHIR, encounterFHIR.id = uuid() as uuid3, e3.fullUrl = append('https://example/Encounter/', uuid3), request.url = 'Encounter', tgt.encounter = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounterFHIR.id) then { // encounterCDA -> encounterFHIR.partOf = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "encounterHeader"; encounterCDA -> encounterFHIR.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "refPatient"; encounterCDA.id -> encounterFHIR.identifier; encounterCDA.statusCode -> encounterFHIR.status; encounterCDA where statusCode.exists().not() -> encounterFHIR.status = 'unknown' "status"; encounterCDA.code as code -> encounterFHIR.class as class then { code.code as code -> class.code = cast(code, 'string'); code.codeSystem as system -> class.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri'); code.displayName as display -> class.display = cast(display, 'string'); } "class"; encounterCDA.text as text -> encounterFHIR.type as type then { text.reference as reference -> type.text = (reference.value) "value"; }; encounterCDA.effectiveTime as effectiveTime -> encounterFHIR.period = create('Period') as period then { effectiveTime -> period.start = create('dateTime') as start then TSDateTime(effectiveTime, start) "val"; } "efft"; } "viste"; src.act as act then { act.id -> tgt.identifier; act.code -> activity.outcomeCodeableConcept; act.text as text -> activity.progress = create('Annotation') as progress then { text.reference as reference -> progress.text = (reference.value) "value"; }; act.effectiveTime as effectiveTime -> detail.scheduled = create('Period') as period then { effectiveTime -> period.start = create('dateTime') as start then TSDateTime(effectiveTime, start) "val"; } "efft"; act -> detail.status = 'completed' "status"; }; } "detail"; } "activityIni"; } group MedicationRequest(source src : substanceAdministration, target patient : Patient, target encounter : Encounter, target tgt : MedicationRequest, target bundle : Bundle) { // default + mandatory src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> tgt.encounter = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference"; src -> tgt.intent = 'order' "intent"; src where statusCode.exists().not() -> tgt.status = 'unknown' "st"; src.statusCode as sc then { sc.code as cos -> tgt.status = translate(cos, '#MedicationStatusMap', 'code') "codeS"; } "status"; src.id -> tgt.identifier; src.text as txt -> tgt.note as note then { txt.reference as reference -> note.text = (reference.value) "text"; } "note"; src.effectiveTime : IVL_TS as eff -> tgt.dosageInstruction = create('Dosage') as dosage then { eff -> dosage.timing = create('Timing') as timing then { eff -> timing.repeat as rep then { eff -> rep.bounds = create('Period') as value then IVLTSPeriod(eff, value) "valuePeriod"; } "rep"; } "timing"; } "period"; src.effectiveTime : EIVL_TS as effe -> tgt.dosageInstruction = create('Dosage') as dosage then { effe -> dosage.timing = create('Timing') as timing then { effe -> timing.repeat as rep then { effe.eventCode as ev -> rep.when = (ev.code); } "rep"; } "timing"; } "period"; src.effectiveTime : IVL_TS as eff -> tgt.dosageInstruction = create('Dosage') as dosage, dosage.timing = create('Timing') as timing, timing.event = (eff.value) "tim"; src.effectiveTime : PIVL_TS as eff -> tgt.dosageInstruction = create('Dosage') as dosage then { eff -> dosage.timing = create('Timing') as timing then periodTiming(eff, timing) "cod"; } "eff"; src where (src.doseQuantity.exists() or src.rateQuantity.exists()) then { src -> tgt.dosageInstruction = create('Dosage') as dosageInstruction then { src.doseQuantity as doseQuant then { doseQuant.originalText as ot then { ot.reference -> dosageInstruction.text; } "ot"; doseQuant -> dosageInstruction.doseAndRate as dosageRate then { doseQuant -> dosageRate.dose = create('Range') as d then { doseQuant -> d.low = create('SimpleQuantity') as l then { doseQuant.low as lo -> l.value = (lo.value); doseQuant.low as lo -> l.unit = (lo.unit); } "low"; doseQuant -> d.high = create('SimpleQuantity') as h then { doseQuant.high as hi -> h.value = (hi.value); doseQuant.high as hi -> h.unit = (hi.unit); } "low"; } "d"; } "dosageRate"; }; src.rateQuantity as rateQuantity then { rateQuantity.originalText as ot then { ot.reference -> dosageInstruction.text; } "ot"; rateQuantity -> dosageInstruction.doseAndRate as dosageRate then { rateQuantity -> dosageRate.rate = create('Range') as d then { rateQuantity -> d.low = create('SimpleQuantity') as l then { rateQuantity.low as lo -> l.value = (lo.value); rateQuantity.low as lo -> l.unit = (lo.unit); } "low"; rateQuantity -> d.high = create('SimpleQuantity') as h then { rateQuantity.high as hi -> h.value = (hi.value); rateQuantity.high as hi -> h.unit = (hi.unit); } "high"; } "r"; } "dosageRate"; } "rate"; src.routeCode -> dosageInstruction.route "route"; src.approachSiteCode -> dosageInstruction.site "site"; src.targetSiteCode -> dosageInstruction.site "site"; } "dosageIn"; } "condition"; src.consumable as consumable -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Medication') as medication, medication.id = uuid() as uuid1, e1.fullUrl = append('https://example/Medication/', uuid1), request.url = 'Medication', tgt.medication = create('Reference') as medref, medref.reference = ('https://example/Medication/' + %medication.id) then Medication(src, medication, patient, bundle) "medication"; src.entryRelationship as entryRelationship then { entryRelationship.supply as supply -> tgt.dispenseRequest as dispenseRequest then { supply.quantity as quantityCDA -> dispenseRequest.quantity as quantityFHIR then { quantityCDA -> quantityFHIR.value = (quantityCDA.value) "value"; }; }; } "entryR"; src.participant as participant then { participant then Practitioner(participant, tgt, bundle) "function"; participant.effectiveTime -> tgt.authoredOn "autor"; } "Partecipant"; } group OrganizationAffiliation(source src : act, target patient : Patient, target enc : Encounter, target tgt : OrganizationAffiliation, target bundle : Bundle) { src.id -> tgt.identifier; // src.code -> tgt.specialty as specialty then{ src.statusCode where code = 'active' -> tgt.active = true; src.statusCode where (code = 'active').not() -> tgt.active = false; src.effectiveTime as eff -> tgt.period; // src.code -> tgt.specialty; src -> tgt.specialty = create('CodeableConcept') as spec then { src.code as code then { code -> spec.coding = create('Coding') as cd then { code -> cd.code = (code.code) "code"; code -> cd.display = (code.displayName) "code"; code.codeSystem as r -> cd.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; } "cd"; } "spec"; src.entryRelationship as entry then { entry.act as a then { a.text as tx then { tx.reference as reff -> spec.text = (reff.value); } "ref"; }; } "entry"; } "a"; } group DiagnosticReportFunction(source src : organizer, target patient : Patient, target enc : Encounter, target tgt : DiagnosticReport, target bundle : Bundle) { src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference"; // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) "reference"; src.code -> tgt.code; src.statusCode where code = 'completed' -> tgt.status = 'final'; src.effectiveTime as eff where (value.exists()) -> tgt.effective = create('dateTime') as value then TSDateTime(eff, value) "value1"; src.effectiveTime as eff where (low.exists()) -> tgt.effective = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod"; src.component as component then { component.observation as observation -> bundle.entry as ei, ei.request = create('BackboneElement') as request, request.method = 'POST', ei.resource = create('Observation') as obsi, obsi.id = uuid() as uuidi, ei.fullUrl = append('https://example/Observation/', uuidi), request.url = 'Observation', tgt.result = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obsi.id) then Observation(observation, patient, enc, obsi, bundle) "hasMember"; }; } group EncounterFunction(source src : cdaElement, target patient : Patient, target encounter : Encounter, target tgt : Encounter, target bundle : Bundle) { src.id -> tgt.identifier; src.statusCode -> tgt.status; src where statusCode.exists().not() -> tgt.status = 'unknown' "status"; src.code as code -> tgt.class as class then { code -> class.code = (code.code) "code"; code -> class.display = (code.displayName) "display"; code.codeSystem as r -> class.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; } "co"; // src.effectiveTime as effective -> tgt.period as period then{ src where effectiveTime.low.exists() or effectiveTime.high.exists() then { src.effectiveTime as eff -> tgt.period = create('Period') as period then IVLTSPeriod(eff, period); } "where"; // effectiveTime = time-stamp src where effectiveTime.low.exists().not() or effectiveTime.high.exists().not() then { src.effectiveTime as effectivetime1 -> tgt.period = create('Period') as period then { effectivetime1 -> period.start = create('dateTime') as start then TSDateTime(effectivetime1, start) "val"; } "efft"; } "where"; // src.effectiveTime as eff where (value.exists()) -> tgt.period = create('dateTime') as value then TSDateTime(eff, value) "value1"; src.text as tx -> tgt.type as ty then { tx.reference as reff -> ty.text = (reff.value) "textType"; }; src.performer as performer -> tgt.participant as part then { performer -> part.period as period then { performer.time as time -> period.start as start then TSDateTime(time, start) "val"; } "period"; performer.assignedEntity as assentity -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('PractitionerRole') as practitionerRole, practitionerRole.id = uuid() as uuid1, e1.fullUrl = append('https://example/PractitionerRole/', uuid1), request.url = 'PractitionerRole', tgt.participant = create('BackboneElement') as participant1, participant1.individual = create('Reference') as referencepart, referencepart.reference = ('https://example/PractitionerRole/' + %practitionerRole.id) then { assentity.code -> practitionerRole.code; assentity -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'PUT', e2.resource = create('Practitioner') as practitioner then { assentity -> practitioner.meta as meta then { assentity -> meta.tag = create('Coding') as coding then { assentity -> coding.system = 'http://algoritmodiscoring' "system"; assentity -> coding.code = 'ClinicalDocument/body/encounter/performer' "code"; } "coding"; } "meta"; assentity.id as id -> practitioner.identifier as identifier then { id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1"; id.extension as ext -> identifier.value = ext then { assentity -> request.url = append('Practitioner?identifier=', ext) "UUID"; } "ext"; id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s; id.root as r then { id.extension as ext -> practitioner.id = (r + '-' + ext) as uuid2, e2.fullUrl = append('https://example/Practitioner/', uuid2), practitionerRole.practitioner = create('Reference') as reference, reference.reference = ('https://example/Practitioner/' + %practitioner.id) "performer"; } "r"; } "identifier"; assentity.id as id where (root = '2.16.840.1.113883.2.9.4.3.2') then { id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID"; } "2"; assentity.id as id where (root != '2.16.840.1.113883.2.9.4.3.2') then { id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID"; } "2"; assentity.addr -> practitioner.address; assentity.telecom -> practitioner.telecom; assentity.assignedPerson as person then { person.name -> practitioner.name; person.birthTime as birthTime then { birthTime.value as date -> practitioner.birthDate = truncate(date, 10); } "birth"; } "name"; } "assignedEntity"; } "performer"; } "01"; }
{
"resourceType" : "StructureMap",
"id" : "cda2fhirPs",
"text" : {
"status" : "generated",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <pre>map "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirPs" = "cda2fhirPs"\n\nuses "http://hl7.org/fhir/cda/StructureDefinition/ClinicalDocument" alias ClinicalDocument as source\nuses "http://hl7.org/fhir/cda/StructureDefinition/AssignedAuthor" alias AssignedAuthor as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/AssignedEntity" alias AssignedEntity as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/AssociatedEntity" alias AssociatedEntity as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/CustodianOrganization" alias CustodianOrganization as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/OrganizationPartOf" alias OrganizationPartOf as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/Organization" alias rapresentedOrganization as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/Section" alias Section as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/PatientRole" alias PatientRole as queried\nuses "http://hl7.org/fhir/cda/StructureDefinition/AD" alias AD as source\nuses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target\nuses "http://hl7.org/fhir/StructureDefinition/Composition" alias Composition as produced\nuses "http://hl7.org/fhir/StructureDefinition/Patient" alias Patient as produced\nuses "http://hl7.org/fhir/StructureDefinition/Encounter" alias Encounter as produced\nuses "http://hl7.org/fhir/StructureDefinition/Person" alias Patient as produced\nuses "http://hl7.org/fhir/StructureDefinition/List" alias List as produced\nuses "http://hl7.org/fhir/StructureDefinition/Practitioner" alias Practitioner as produced\nuses "http://hl7.org/fhir/StructureDefinition/Organization" alias Organization as produced\nuses "http://hl7.org/fhir/cda/StructureDefinition/Act" alias Act as produced\nuses "http://hl7.org/fhir/cda/StructureDefinition/IVL-PQ" alias IVL_PQ as source\nuses "http://hl7.org/fhir/cda/StructureDefinition/PQ" alias PQ as source\nuses "http://hl7.org/fhir/StructureDefinition/SimpleQuantity" alias SimpleQuantity as target\n\nimports "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirDataTypes"\nimports "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirHeader"\n\ngroup CdaToBundle(source cda : ClinicalDocument, target bundle : Bundle) {\n cda -> bundle.entry as e, e.request = create('BackboneElement') as request, request.method = 'POST', e.resource = create('Composition') as composition, composition.id = uuid() as uuid1, e.fullUrl = append('https://example/Composition/', uuid1), request.url = 'Composition', bundle.entry as e2, e2.request = create('BackboneElement') as requestPAT, requestPAT.method = 'PUT', e2.resource = create('Patient') as patient, patient.id = uuid() as uuid2, e2.fullUrl = append('https://example/Patient/', uuid2), bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Encounter') as encounter, encounter.id = uuid() as uuid3, e3.fullUrl = append('https://example/Encounter/', uuid3), request.url = 'Encounter', bundle.entry as e4, e4.request = create('BackboneElement') as request, request.method = 'POST', e4.resource = create('DocumentReference') as DocumentReference, DocumentReference.id = uuid() as uuid4, e4.fullUrl = append('https://example/DocumentReference/', uuid4), request.url = 'DocumentReference' then {\n cda then ClinicalDocumentToBundle(cda, patient, composition, encounter, bundle, DocumentReference) "cdatobundle";\n cda.recordTarget as recordTarget then {\n recordTarget.patientRole as patient then {\n patient.id as id -> patient.identifier as identifier then {\n id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n id.extension as ext1 -> identifier.value = ext1 "value";\n id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s;\n } "idfr";\n patient.id as id where (root = '2.16.840.1.113883.2.9.4.3.2') or (root = '2.16.840.1.113883.2.9.4.3.7') or (root = '2.16.840.1.113883.2.9.4.3.3') or (root = '2.16.840.1.113883.2.9.4.3.17') or (root = '2.16.840.1.113883.2.9.4.3.18') or (root = '2.16.840.1.113883.2.9.2.10.4.1.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1.1') or (root = '2.16.840.1.113883.2.9.2.10.4.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1') or (root = '2.16.840.1.113883.2.9.4.3.15') then {\n id.extension as ext -> requestPAT.url = append('Patient?identifier=', ext) "UUID";\n } "ext";\n } "recPat";\n } "patient";\n } "ClinicalDocumentToBody";\n}\n\ngroup ClinicalDocumentToBundle(source cda : ClinicalDocument, target patient : Patient, target composition : Composition, target encounter : Encounter, target bundle : Bundle, target DocumentReference : DocumentReference) {\n cda -> encounter.status = 'finished' "finished";\n cda -> encounter.class = create('Coding') as coding then {\n cda -> coding.code = 'summary' "code";\n } "coding";\n cda -> bundle.id = uuid() "id";\n cda.id -> bundle.identifier "identifier";\n cda -> bundle.type = 'transaction' "type";\n // cda.effectiveTime -> bundle.timestamp;\n cda -> bundle.timestamp = (timestamp.now()) "date";\n cda then ClinicalDocumentComposition(cda, composition, patient, encounter, bundle, DocumentReference) "composition";\n cda.component as component then {\n component.structuredBody as body then {\n body.component as component then {\n component.section as srcSection then {\n srcSection.code -> composition.section as tgtSection then ClinicalDocumentSection(cda, srcSection, patient, tgtSection, bundle, encounter, composition);\n };\n };\n } "body";\n } "diagnostic";\n}\n\ngroup ClinicalDocumentSection(source cda : ClinicalDocument, source src : Section, target patient : Patient, target tgt, target bundle : Bundle, target enc : Encounter, target composition : Composition) {\n src.title as t -> tgt.title = (t.dataString);\n src.code -> tgt.code;\n src.entry as entry then {\n src.text as cdaText -> tgt.text as fhirText then {\n cdaText -> fhirText.status = 'generated' "narrativeStatus";\n cdaText as t -> fhirText.div = t "narrativeText";\n } "cdaText";\n // sezioni che sono strutturate\n src.code where (code = '30954-2') then {\n entry.organizer as organizer -> bundle.entry as e0, e0.request = create('BackboneElement') as request, request.method = 'POST', e0.resource = create('DiagnosticReport') as dia, dia.id = uuid() as uuid0, e0.fullUrl = append('https://example/DiagnosticReport/', uuid0), request.url = 'DiagnosticReport', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/DiagnosticReport/' + %dia.id) then DiagnosticReportFunction(organizer, patient, enc, dia, bundle) "diagnostic";\n } "entryObs";\n src.code where (code = '29762-2') or (code = '10162-6') then {\n entry.observation as observation -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as obs1, obs1.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then Observation(observation, patient, enc, obs1, bundle) "obs1";\n } "entryObs";\n src.code where (code = '8716-3') or (code = '47420-5') then {\n entry.organizer as organizer -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'POST', e2.resource = create('Observation') as obs2, obs2.id = uuid() as uuid2, e2.fullUrl = append('https://example/Observation/', uuid2), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs2.id) then ObservationOrganizer(src, organizer, patient, enc, obs2, bundle) "obs2";\n entry.observation as organizer -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'POST', e2.resource = create('Observation') as obs2, obs2.id = uuid() as uuid2, e2.fullUrl = append('https://example/Observation/', uuid2), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs2.id) then ObservationOrganizer(src, organizer, patient, enc, obs2, bundle) "obs2";\n } "organizer";\n src.code where code = '11450-4' then {\n entry.act as act -> bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Condition') as condition, condition.id = uuid() as uuid3, e3.fullUrl = append('https://example/Condition/', uuid3), request.url = 'Condition', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Condition/' + %condition.id) then ConditionFunction(act, condition, patient, enc, bundle) "condition";\n } "listaDeiProblemi";\n src.code where (code = '48765-2') then {\n entry.act as act -> bundle.entry as e5, e5.request = create('BackboneElement') as request, request.method = 'POST', e5.resource = create('AllergyIntolerance') as allergy, allergy.id = uuid() as uuid5, e5.fullUrl = append('https://example/AllergyIntolerance/', uuid5), request.url = 'AllergyIntolerance', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/AllergyIntolerance/' + %allergy.id) then allergyFunction(act, allergy, patient, enc) "allergy";\n } "entryAct";\n src.code where code = '10160-0' then {\n entry.substanceAdministration as subAdmin -> bundle.entry as e6, e6.request = create('BackboneElement') as request, request.method = 'POST', e6.resource = create('MedicationStatement') as medicationstatement, medicationstatement.id = uuid() as uuid6, e6.fullUrl = append('https://example/MedicationStatement/', uuid6), request.url = 'MedicationStatement', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/MedicationStatement/' + %medicationstatement.id) then MedicationStatement(subAdmin, medicationstatement, patient, enc, bundle) "TerapiaFarmacologica";\n } "terapia";\n src.code where code = '11369-6' then {\n entry.substanceAdministration as subVACC -> bundle.entry as e7, e7.request = create('BackboneElement') as request, request.method = 'POST', e7.resource = create('Immunization') as immunization, immunization.id = uuid() as uuid7, e7.fullUrl = append('https://example/Immunization/', uuid7), request.url = 'Immunization', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Immunization/' + %immunization.id) then Immunization(subVACC, patient, enc, immunization, bundle) "immunization";\n } "vacc";\n src.code where code = '10157-6' then {\n entry.organizer as organizer -> bundle.entry as e12, e12.request = create('BackboneElement') as request, request.method = 'POST', e12.resource = create('FamilyMemberHistory') as familyMember, familyMember.id = uuid() as uuid12, e12.fullUrl = append('https://example/FamilyMemberHistory/', uuid12), request.url = 'FamilyMemberHistory', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/FamilyMemberHistory/' + %familyMember.id) then FamilyMemberFunction(organizer, familyMember, patient) "family";\n } "family";\n src.code where code = '46264-8' then {\n entry.supply as supply -> bundle.entry as e8, e8.request = create('BackboneElement') as request, request.method = 'POST', e8.resource = create('Procedure') as procedure, procedure.id = uuid() as uuid8, e8.fullUrl = append('https://example/Procedure/', uuid8), request.url = 'Procedure', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Procedure/' + %procedure.id) then Procedure(supply, patient, enc, procedure, bundle) "protesi";\n } "impianti";\n src.code where code = '47519-4' then {\n entry.procedure as procedure -> bundle.entry as e9, e9.request = create('BackboneElement') as request, request.method = 'POST', e9.resource = create('Procedure') as procedure2, procedure2.id = uuid() as uuid9, e9.fullUrl = append('https://example/Procedure/', uuid9), request.url = 'Procedure', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Procedure/' + %procedure2.id) then Procedure(procedure, patient, enc, procedure2, bundle) "tratt";\n } "trattamentiProcedure";\n src.code where code = '46240-8' then {\n // entry.encounter as encounter -> enc then{\n entry.encounter as encounter -> bundle.entry as e9, e9.request = create('BackboneElement') as request, request.method = 'POST', e9.resource = create('Encounter') as encounterF, encounterF.id = uuid() as uuid9, e9.fullUrl = append('https://example/Encounter/', uuid9), request.url = 'Encounter', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounterF.id) then EncounterFunction(encounter, patient, enc, encounterF, bundle);\n } "visiteRicoveri";\n src.code where code = '57827-8' then {\n entry.act as act -> bundle.entry as e13, e13.request = create('BackboneElement') as request, request.method = 'POST', e13.resource = create('Coverage') as coverage, coverage.id = uuid() as uuid13, e13.fullUrl = append('https://example/Coverage/', uuid13), request.url = 'Coverage', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Coverage/' + %coverage.id) then Coverage(act, patient, enc, coverage, bundle) "esen";\n } "esenzioni";\n src.code where code = 'PSSIT99' then {\n entry.act as act -> bundle.entry as e14, e14.request = create('BackboneElement') as request, request.method = 'POST', e14.resource = create('OrganizationAffiliation') as affiliation, affiliation.id = uuid() as uuid14, e14.fullUrl = append('https://example/OrganizationAffiliation/', uuid14), request.url = 'OrganizationAffiliation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/OrganizationAffiliation/' + %affiliation.id) then OrganizationAffiliation(act, patient, enc, affiliation, bundle) "OrgAffiliation";\n } "retiPatologia";\n };\n src where src.entry.exists() then {\n src.code where code = '18776-5' then {\n src -> bundle.entry as e11, e11.request = create('BackboneElement') as request, request.method = 'POST', e11.resource = create('CarePlan') as careplan, careplan.id = uuid() as uuid11, e11.fullUrl = append('https://example/CarePlan/', uuid11), request.url = 'CarePlan', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/CarePlan/' + %careplan.id) then {\n src.entry as entry then CarePlanFunction(entry, careplan, patient, enc, bundle) "prestazioni";\n } "pianiCura";\n } "raccoglitore";\n } "esiste";\n src where src.entry.exists().not() then {\n // Anmanesi Familiare narrativa\n src.code where code = '10157-6' then {\n src.text as text -> bundle.entry as e12, e12.request = create('BackboneElement') as request, request.method = 'POST', e12.resource = create('FamilyMemberHistory') as familyMember, familyMember.id = uuid() as uuid12, e12.fullUrl = append('https://example/FamilyMemberHistory/', uuid12), request.url = 'FamilyMemberHistory', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/FamilyMemberHistory/' + %familyMember.id) then {\n src -> familyMember.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n src -> familyMember.status = 'health-unknown' "statusS";\n text -> familyMember.note as note then {\n text as t -> note.text = t "reference";\n } "reference";\n text -> familyMember.relationship = create('CodeableConcept') as relation then {\n text as txt -> relation.text = txt "text";\n } "medication";\n } "family";\n } "familyraccoglitore";\n // Piano di cura narrativa\n src.code where code = '18776-5' then {\n src.text as text -> bundle.entry as e11, e11.request = create('BackboneElement') as request, request.method = 'POST', e11.resource = create('CarePlan') as careplan, careplan.id = uuid() as uuid11, e11.fullUrl = append('https://example/CarePlan/', uuid11), request.url = 'CarePlan', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/CarePlan/' + %careplan.id) then {\n src -> careplan.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src-> careplan.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) "reference";\n src -> careplan.status = 'active' "status";\n src -> careplan.intent = 'order' "intent";\n text -> careplan.note as note then {\n text as t -> note.text = t "reference";\n } "reference";\n } "pianiCura";\n } "raccoglitore";\n // sezioni che sono narrative\n src.code where (code = '30954-2') or (code = '29762-2') or (code = '8716-3') or (code = '47420-5') or (code = '42348-3') then {\n src.text as text -> bundle.entry as e13, e13.request = create('BackboneElement') as request, request.method = 'POST', e13.resource = create('Observation') as obs1, obs1.id = uuid() as uuid13, e13.fullUrl = append('https://example/Observation/', uuid13), request.url = 'Observation', tgt.entry = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then {\n src -> obs1.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> obs1.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) "reference";\n src -> obs1.status = 'preliminary' "obsst";\n src.code -> obs1.code "obscde";\n src -> obs1.status = 'final' "statusS";\n text -> obs1.note as note then {\n text as t -> note.text = create('string') as textNote then EDstring(t, textNote) "note";\n } "narrative";\n } "txtsec";\n } "narrative";\n } "code";\n src.component as component then {\n component.section as sec -> tgt.section as tgtSection then ClinicalDocumentSection(cda, sec, patient, tgtSection, bundle, enc, dReport);\n };\n}\n\ngroup Procedure(source src : cdaElement, target patient : Patient, target encounter : Encounter, target tgt : Procedure, target bundle : Bundle) {\n // toASK\n src.text as tx -> tgt.note as note then {\n tx.reference as reff -> note.text = (reff.value) "r";\n } "tx";\n src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.10.3' then {\n src.effectiveTime as effectiveTime -> tgt.performed = (effectiveTime.value);\n src.code -> tgt.code;\n } "ref";\n src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n src.statusCode as s then {\n s.code as cos -> tgt.status = translate(cos, '#EventStatus', 'code') "codeS";\n } "status";\n src where statusCode.exists().not() -> tgt.status = 'unknown' "status2";\n src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.9.1' then {\n src -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Device') as deviceRes, deviceRes.id = uuid() as uuid1, e1.fullUrl = append('https://example/Device/', uuid1), request.url = 'Device', tgt.usedReference = create('Reference') as reference, reference.reference = ('https://example/Device/' + %deviceRes.id) then {\n src -> deviceRes.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n src.code -> deviceRes.type;\n } "device";\n src.effectiveTime as effectiveTime where (value.exists()) -> tgt.performed = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n src.effectiveTime as effectiveTime where (low.exists()) -> tgt.performed = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n } "presenzaProtesiImpianto";\n src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.9.2' then {\n src.code as code -> tgt.note as note then {\n code.displayName as displayName -> note.text = (displayName) "text";\n } "note";\n } "assenza";\n src.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.11.1' then {\n src.id -> tgt.identifier;\n src.code -> tgt.code;\n src.effectiveTime as effectiveTime where (value.exists()) -> tgt.performed = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n src.effectiveTime as effectiveTime where (low.exists()) -> tgt.performed = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n src.entryRelationship as entryR then {\n entryR.observation as observation -> bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Observation') as obs1, obs1.id = uuid() as uuid3, e3.fullUrl = append('https://example/Observation/', uuid3), request.url = 'Observation', tgt.reasonReference = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then Observation(observation, patient, encounter, obs1, bundle);\n } "entryRelProcedure";\n } "procedureTrattamenti";\n}\n\ngroup Observation(source cda, target patient : Patient, target encounter : Encounter, target ob : Observation, target bundle : Bundle) {\n cda -> ob.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // cda-> ob.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n cda.id -> ob.identifier;\n cda.code -> ob.code;\n cda -> ob.status = 'final' "Stats";\n // value datatype\n cda.value : ST as st -> ob.value = create('string'), ob.value = (st.dataString);\n cda.value : BL as boolean -> ob.value = (boolean.value) "boolean";\n cda.value : INT as int -> ob.value = (int.value) "intval";\n cda.value : CE as val then {\n val -> ob.value = create('CodeableConcept') as ce then {\n val.originalText as originalText then {\n originalText.reference as reference -> ce.text = (reference.value);\n };\n val -> ce.coding as coding then {\n val.code as code -> coding.code = cast(code, 'string');\n val.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n val.displayName as display -> coding.display = cast(display, 'string');\n } "code";\n val.translation as translation -> ce.coding as coding then {\n translation.code as code -> coding.code = cast(code, 'string');\n translation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n translation.displayName as display -> coding.display = cast(display, 'string');\n translation.qualifier as qualifier then {\n qualifier.value as value -> ce.coding as coding then {\n value.code as code -> coding.code = cast(code, 'string');\n value.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n value.displayName as display -> coding.display = cast(display, 'string');\n };\n };\n };\n } "coding";\n } "val";\n cda.value : CD as val then {\n val -> ob.value = create('CodeableConcept') as ce then {\n val.originalText as originalText then {\n originalText.reference as reference -> ce.text = (reference.value);\n };\n val -> ce.coding as coding then {\n val.code as code -> coding.code = cast(code, 'string');\n val.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n val.displayName as display -> coding.display = cast(display, 'string');\n } "code";\n val.translation as translation -> ce.coding as coding then {\n translation.code as code -> coding.code = cast(code, 'string');\n translation.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n translation.displayName as display -> coding.display = cast(display, 'string');\n translation.qualifier as qualifier then {\n qualifier.value as value -> ce.coding as coding then {\n value.code as code -> coding.code = cast(code, 'string');\n value.codeSystem as system -> coding.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n value.displayName as display -> coding.display = cast(display, 'string');\n };\n };\n };\n } "coding";\n } "val";\n cda.value : PQ as val then {\n val -> ob.value = create('Quantity') as quantity then {\n val.value as value -> quantity.value = value;\n val.unit as unit -> quantity.unit = unit;\n } "quantity";\n } "valueQuantity";\n cda.effectiveTime as effectiveTime where (value.exists()) -> ob.effective = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n cda.effectiveTime as effectiveTime where (low.exists()) -> ob.effective = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n cda.text as text -> ob.note as note then {\n text.reference as reference -> note.text = (reference.value) "text";\n } "note";\n cda.statusCode as s then {\n s.code as cos -> ob.status = translate(cos, '#OBSstatus', 'code') "codeS";\n } "status";\n // toASK è giusto siano invertiti?\n cda.methodCode -> ob.method;\n cda.interpretationCode -> ob.interpretation;\n cda.targetSiteCode -> ob.bodySite;\n // added\n cda.referenceRange as refrange then {\n refrange.observationRange as obsrange then {\n obsrange.value as val -> ob.referenceRange = create('BackboneElement') as refrangeFH then {\n val -> refrangeFH.low = create('SimpleQuantity') as lowfhir then {\n val.low as l -> lowfhir.value = (l.value) "val";\n val.low as l -> lowfhir.unit = (l.unit) "val";\n } "de";\n val -> refrangeFH.high = create('SimpleQuantity') as highfhir then {\n val.high as h -> highfhir.value = (h.value) "val";\n val.high as h -> highfhir.unit = (h.unit) "val";\n } "de";\n } "refFhir";\n } "obsrange";\n } "regrange";\n}\n\ngroup ObservationOrganizer(source section : section, source cda : organizer, target patient : Patient, target encounter : Encounter, target ob : Observation, target bundle : Bundle) {\n cda -> ob.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // cda-> ob.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n cda.id -> ob.identifier;\n section.code -> ob.code;\n cda -> ob.status = 'final' "Stats";\n cda.effectiveTime as effectiveTime where (value.exists()) -> ob.effective = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n cda.effectiveTime as effectiveTime where (low.exists()) -> ob.effective = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n cda.text as text -> ob.note as note then {\n text.reference as reference -> note.text = (reference.value) "text";\n } "note";\n cda.statusCode as s then {\n s.code as cos -> ob.status = translate(cos, '#OBSstatus', 'code') "codeS";\n } "status";\n cda.component as component then {\n component.observation as observation -> bundle.entry as ei, ei.request = create('BackboneElement') as request, request.method = 'POST', ei.resource = create('Observation') as obsi, obsi.id = uuid() as uuidi, ei.fullUrl = append('https://example/Observation/', uuidi), request.url = 'Observation', ob.hasMember = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obsi.id) then Observation(observation, patient, encounter, obsi, bundle) "hasMember";\n };\n}\n\ngroup Coverage(source src : act, target patient : Patient, target encounter : Encounter, target tgt : Coverage, target bundle : Bundle) {\n src -> tgt.beneficiary = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n src -> tgt.payor = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n src.id as id -> tgt.identifier as idf then {\n id -> idf.value = (id.root) "ID";\n };\n src.code -> tgt.type;\n src.statusCode as statusCode then {\n statusCode.code as s -> tgt.status = translate(s, '#FinancialStatus', 'code') "status";\n } "sc";\n src where statusCode.exists().not() -> tgt.status = 'active' "statusAbsent";\n // src.effectiveTime as effectiveTime -> tgt.period as period then{\n src.effectiveTime as effectiveTime where (value.exists()) -> tgt.period = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n src.effectiveTime as effectiveTime where (low.exists()) -> tgt.period = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n src.entryRelationship as entryRelationship then {\n entryRelationship.act as ac -> tgt.class as class then {\n ac.text as text -> class.type as type then {\n text.reference as reference -> type.text = (reference.value) "value";\n } "ref";\n ac -> class.value = 'commenti' "note";\n } "QUI";\n } "entryr";\n}\n\ngroup allergyFunction(source src : cdaElement, target tgt : AllergyIntolerance, target patient : Patient, target encounter : Encounter) {\n src -> tgt.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n src.effectiveTime as effTime then {\n effTime.low as l -> tgt.recordedDate as r then TSDateTime(l, r) "value";\n } "efftime";\n src.entryRelationship as entryRelationship1 then {\n entryRelationship1.observation as observation1 then {\n observation1.id -> tgt.identifier;\n observation1.templateId where root = '2.16.840.1.113883.2.9.10.1.4.3.1.4' -> tgt.code as code then {\n observation1 -> code.coding as coding then {\n observation1 -> coding.code = 'No known allergy' "code";\n } "code";\n src.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n src.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n } "Noallergy";\n observation1.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n observation1.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n observation1.value as code then {\n code.code as code1 -> tgt.type = translate(code1, '#AllergyTypeMap', 'code') "type";\n code.code as code1 -> tgt.category = translate(code1, '#AllergyCategoryMap', 'code') "category";\n } "code";\n // toASK qui dovrei fare un controllo sul code\n observation1.value -> tgt.code;\n observation1.participant as participant -> tgt.reaction as reaction then {\n observation1.entryRelationship as entryRelationship2 where (typeCode = 'MFST') then {\n entryRelationship2.observation as observation2 then {\n observation2.value -> reaction.manifestation "manifestation";\n observation2.code -> reaction.manifestation "manifestation";\n observation2.text as tx then {\n tx.reference as reff -> reaction.description = (reff.value) "tx";\n } "tx";\n observation2.effectiveTime as effectiveTime then {\n effectiveTime.low as low -> reaction.onset = create('dateTime') as value then TSDateTime(low, value) "valuePeriodLow";\n effectiveTime.high as high -> tgt.lastOccurrence = create('dateTime') as value then TSDateTime(high, value) "valuePeriodHigh";\n } "low";\n } "observ2";\n } "entryR2";\n participant.participantRole as participantRole then {\n participantRole.playingEntity as playingEntity then {\n playingEntity.code -> reaction.substance "reaction";\n };\n };\n };\n observation1.entryRelationship as entryRelationship2 where (typeCode = 'MFST') then {\n entryRelationship2.observation as observation2 where observation1.participant.exists().not() -> tgt.reaction as reaction then {\n observation2.value -> reaction.manifestation "manifestation";\n observation2.text as tx then {\n tx.reference as reff -> reaction.description = (reff.value) "tx";\n } "tx";\n observation2.effectiveTime as effectiveTime then {\n effectiveTime.low as low -> reaction.onset = create('dateTime') as value then TSDateTime(low, value) "valuePeriodLow";\n } "low";\n } "observ2";\n } "entryR2";\n observation1.entryRelationship as entryRelationship3 where (typeCode = 'SUBJ') then {\n entryRelationship3.observation as observation3 then {\n observation3.value as value then {\n value.code as c -> tgt.criticality = translate(c, '#CricalityMap', 'code') "value";\n } "criticality";\n } "observ3";\n entryRelationship3.act as act -> tgt.note as note then {\n act.text as text then {\n text.reference as reference -> note.text = (reference.value);\n } "note";\n };\n } "entryR3";\n observation1.entryRelationship as entryRelationship4 where (typeCode = 'REFR') then {\n entryRelationship4.observation as observation4 then {\n observation4 -> tgt.clinicalStatus as clinicalStatus then {\n observation4.value as value then {\n value as valu -> clinicalStatus.coding = create('Coding') as coding then {\n valu where (code = 'LA9041-0') -> coding.code = 'resolved' "code";\n valu where (code = 'LA18632-2') -> coding.code = 'inactive' "code";\n valu where (code = 'LA16666-2') -> coding.code = 'active' "code";\n valu -> coding.system = 'http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical' "system";\n valu.displayName as display -> coding.display = cast(display, 'string') "display";\n } "coding";\n };\n observation4.text as tx then {\n tx.reference as ref -> clinicalStatus.text = (ref.value);\n } "tx";\n } "clinicalStatus";\n } "observ4";\n } "entryR4";\n };\n } "entryrelationship";\n}\n\ngroup MedicationStatement(source src : substanceAdministration, target tgt : MedicationStatement, target patient : Patient, target encounter : Encounter, target bundle : Bundle) {\n src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> tgt.context = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n src.statusCode -> tgt.status "status";\n src.id -> tgt.identifier;\n src.text as text -> tgt.note as note then {\n text.reference as reference -> note.text = (reference.value) "text";\n } "note";\n src.effectiveTime as eff where (value.exists()) -> tgt.effective = create('dateTime') as value then TSDateTime(eff, value) "value1";\n src.effectiveTime : IVL_TS as eff -> tgt.effective = create('Period') as value then IVLTSPeriod(eff, value) "valuePeriod";\n src -> tgt.dosage = create('Dosage') as dosage then {\n src.effectiveTime : PIVL_TS as eff then {\n eff -> dosage.timing = create('Timing') as timing then periodTiming(eff, timing) "cod";\n } "eff";\n src where (src.doseQuantity.exists() or src.rateQuantity.exists() or src.routeCode.exists() or src.approachSiteCode.exists()) then {\n src.doseQuantity as doseQuant then {\n doseQuant.originalText as ot then {\n ot.reference -> dosage.text;\n } "ot";\n doseQuant -> dosage.doseAndRate as dosageRate then {\n doseQuant -> dosageRate.dose = create('Range') as d then {\n doseQuant -> d.low = create('SimpleQuantity') as l then {\n doseQuant.low as lo -> l.value = (lo.value);\n doseQuant.low as lo -> l.unit = (lo.unit);\n } "low";\n doseQuant -> d.high = create('SimpleQuantity') as h then {\n doseQuant.high as hi -> h.value = (hi.value);\n doseQuant.high as hi -> h.unit = (hi.unit);\n } "low";\n } "d";\n } "dosageRate";\n };\n src.rateQuantity as rateQuantity then {\n rateQuantity.originalText as ot then {\n ot.reference -> dosage.text;\n } "ot";\n rateQuantity -> dosage.doseAndRate as dosageRate then {\n rateQuantity -> dosageRate.rate = create('Range') as d then {\n rateQuantity -> d.low = create('SimpleQuantity') as l then {\n rateQuantity.low as lo -> l.value = (lo.value);\n rateQuantity.low as lo -> l.unit = (lo.unit);\n } "low";\n rateQuantity -> d.high = create('SimpleQuantity') as h then {\n rateQuantity.high as hi -> h.value = (hi.value);\n rateQuantity.high as hi -> h.unit = (hi.unit);\n } "high";\n } "r";\n } "dosageRate";\n } "rate";\n src.routeCode -> dosage.route "route";\n src.approachSiteCode -> dosage.site "site";\n src.targetSiteCode -> dosage.site "site";\n } "route";\n } "dos";\n src.consumable as consumable then {\n consumable.manufacturedProduct as manufacturedProduct -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Medication') as medication, medication.id = uuid() as uuid1, e1.fullUrl = append('https://example/Medication/', uuid1), request.url = 'Medication', tgt.medication = create('Reference') as medref, medref.reference = ('https://example/Medication/' + %medication.id) then Medication(src, medication, patient, bundle) "medication";\n };\n}\n\ngroup periodTiming(source effectiveTime : PIVL_TS, target timing : Timing) {\n effectiveTime -> timing.repeat as r then {\n effectiveTime.period as p -> r.period = (p.value);\n effectiveTime.period as p -> r.periodUnit = (p.unit);\n } "repeat";\n}\n\ngroup Medication(source src : substanceAdministration, target tgt : Medication, target patient : Patient, target bundle : Bundle) {\n src.consumable as consumable then {\n consumable.manufacturedProduct as manufacturedProduct then {\n manufacturedProduct.manufacturedMaterial as manufacturedMaterial then {\n manufacturedMaterial.code -> tgt.code "CE";\n src.administrationUnitCode -> tgt.form "form";\n } "material";\n } "product";\n };\n src.entryRelationship as entryR then {\n entryR.observation as observation then {\n observation.code where displayName = 'Grammatura' -> tgt.ingredient as ingredient then {\n src.consumable as consumable then {\n consumable.manufacturedProduct as manufacturedProduct then {\n manufacturedProduct.manufacturedMaterial as manufacturedMaterial then {\n manufacturedMaterial.code as code -> ingredient.item = create('CodeableConcept') as value then CECodeableConcept(code, value) "CE";\n } "material";\n } "product";\n };\n observation.value as value -> ingredient.strength as strength then {\n value -> strength.numerator as numerator then {\n value -> numerator.value = (value.value) "valueN";\n } "numerator";\n value -> strength.denominator as denominator then {\n value -> denominator.value = 1 "valueD";\n } "denominator";\n } "strenght";\n } "ingredient";\n observation.code where displayName = 'Quantità nella Confezione' then {\n observation.value as value -> tgt.amount as amount then {\n value -> amount.numerator as numerator then {\n value -> numerator.value = (value.value) "valueN";\n } "numerator";\n value -> amount.denominator as denominator then {\n value -> denominator.value = 1 "valueD";\n } "denominator";\n } "amount";\n } "quantita";\n } "obs";\n } "entryR";\n}\n\ngroup Immunization(source substance : substanceAdministration, target patient : Patient, target encounter : Encounter, target tgt : Immunization, target bundle : Bundle) {\n substance -> tgt.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "patientRef";\n // substance -> tgt.encounter = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "encounterRef";\n substance.id as id -> tgt.identifier as idf then {\n id.root as r -> idf.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n };\n substance.text as text -> tgt.note as note then {\n text.reference as reference -> note.text = (reference.value) "text";\n } "note";\n substance.statusCode as statusc where (code = 'completed') -> tgt.status = 'completed';\n substance.statusCode as statusc where (code = 'aborted') -> tgt.status = 'final';\n substance.statusCode as statusc where (code = 'suspended') -> tgt.status = 'enterer-in-error';\n substance.statusCode as statusc where (code = 'cancelled') -> tgt.status = 'not-done';\n substance.effectiveTime as time -> tgt.occurrence = create('dateTime') as value then TSDateTime(time, value) "efftime";\n substance.routeCode -> tgt.route;\n substance.approachSiteCode -> tgt.site;\n substance -> tgt.doseQuantity = create('SimpleQuantity') as quantity then {\n substance.doseQuantity as q then {\n q -> quantity.value = (q.value) "val";\n q -> quantity.unit = (q.unit) "uni";\n } "qua";\n } "q";\n substance.consumable as cons then {\n cons.manufacturedProduct as manufact then {\n manufact.manufacturedMaterial as manufactmat then {\n manufactmat.code -> tgt.vaccineCode;\n manufactmat.lotNumberText as t -> tgt.lotNumber = (t.dataString);\n } "manufactmat";\n manufact.manufacturerOrganization as manufactOrg -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'PUT', e1.resource = create('Organization') as organization then {\n manufactOrg.id as id -> organization.identifier as identifier then {\n id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n id.extension as ext -> identifier.value = ext then {\n manufactOrg -> request.url = append('Organization?identifier=', ext) "UUID";\n } "ext";\n id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s;\n id.root as r then {\n id.extension as ext -> organization.id = (r + '-' + ext) as uuid, e1.fullUrl = append('https://example/', uuid), tgt.manufacturer = create('Reference') as reference, reference.reference = ('https://example/' + %organization.id) "idasi";\n } "r";\n } "identifier";\n manufactOrg.name as n -> organization.name = (n.other);\n manufactOrg -> organization.meta as meta then {\n manufactOrg -> meta.tag = create('Coding') as coding then {\n manufactOrg -> coding.system = 'http://algoritmodiscoring' "system";\n manufactOrg -> coding.code = 'ClinicalDocument/body/Vaccinazioni/manufacturerOrganization' "code";\n } "coding";\n } "meta";\n } "manufactOrg";\n } "manufact";\n } "cons";\n substance.participant as part -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'PUT', e1.resource = create('Location') as location, location.id = uuid() as uuid1 then {\n part -> location.meta as meta then {\n part -> meta.tag = create('Coding') as coding then {\n part -> coding.system = 'http://algoritmodiscoring' "system";\n part -> coding.code = 'ClinicalDocument/body/Vaccinazione/participant' "code";\n } "coding";\n } "meta";\n part.participantRole as partRole then {\n partRole.id as id -> location.identifier as identifier then {\n id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n id.extension as ext -> identifier.value = ext then {\n partRole -> request.url = append('Location?identifier=', ext) "UUID";\n } "ext";\n id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s;\n id.root as r then {\n id.extension as ext -> location.id = (r + '-' + ext) as uuid, e1.fullUrl = append('https://example/Location', uuid), tgt.location = create('Reference') as reference, reference.reference = ('https://example/' + %location.id) "idasi";\n } "r";\n } "identifier";\n } "role";\n } "part";\n substance.entryRelationship as entrirel1 then {\n entrirel1.observation as obs then {\n obs.code where (code = '30973-2') then {\n obs -> tgt.protocolApplied = create('BackboneElement') as prot then {\n obs.value as v then {\n v.value as int -> prot.doseNumber = (int.toString());\n };\n } "val";\n } "codecontrol";\n } "obs";\n } "entrirel1";\n substance.entryRelationship as entrirel2 then {\n entrirel2.observation as obs then {\n obs.code where (code = '59781-5') then {\n obs.value as value then {\n value.high as h then {\n h.value as value -> tgt.expirationDate = truncate(value, 10);\n } "val";\n };\n } "codecontrol";\n } "obs";\n } "entrirel2";\n substance.entryRelationship as entrirel4 then {\n entrirel4.observation as obs then {\n obs.code where (code = '59785-6') -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as observation, observation.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', tgt.reasonReference = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %observation.id) then {\n obs then Observation1(entrirel4, patient, tgt, bundle, enc, observation) "observation";\n } "codecontrol";\n } "obs";\n } "entrirel4";\n substance.entryRelationship as entrirel5 then {\n entrirel5.observation as obs then {\n obs.code where (code = '75321-0') or (code = '5321-0') -> tgt.reaction as reaction then {\n obs -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as observation, observation.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', reaction.detail = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %observation.id) then Observation(obs, patient, encounter, observation, bundle) "observation";\n } "codecontrol";\n } "obs";\n } "entrirel5";\n substance.entryRelationship as entrirel5 then {\n entrirel5.act as act then {\n act.text as tx -> tgt.note as note then {\n tx.reference as reference -> note.text = (reference.value) "text";\n } "note";\n } "obs";\n } "entrirel5";\n}\n\ngroup ConditionFunction(source src : cdaElement, target tgt : Condition, target patient : patient, target encounter : encounter, target bundle : Bundle) {\n src.id -> tgt.identifier;\n src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n src.statusCode as stscode -> tgt.verificationStatus as verifstatus then {\n stscode as codeS -> verifstatus.coding = create('Coding') as coding then {\n codeS.code -> coding.code = 'confirmed';\n codeS -> coding.system = 'http://terminology.hl7.org/CodeSystem/condition-ver-status' "system";\n codeS -> coding.display = cast('Confirmed', 'string') "display";\n } "coding";\n } "verifstatus";\n src where entryRelationship.exists().not() then {\n src.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n src.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n } "onset";\n src.entryRelationship as entryRelationship then {\n entryRelationship.observation as obsentry then {\n // toASK\n obsentry.value -> tgt.code;\n obsentry.code -> tgt.category;\n obsentry.effectiveTime as effectiveTime where (value.exists()) -> tgt.onset = create('dateTime') as value then TSDateTime(effectiveTime, value) "value1";\n obsentry.effectiveTime as effectiveTime -> tgt.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n obsentry.text as text -> tgt.note as note then {\n text.reference as reference -> note.text = (reference.value) "text";\n } "note";\n obsentry.entryRelationship as entryR2 then {\n entryR2.observation as obsentry2 then {\n obsentry2.code where code = '89261-2' then {\n obsentry2 -> tgt.evidence as evidence, bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as obsy, obsy.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', evidence.detail = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obsy.id) then Observation(obsentry2, patient, encounter, obsy, bundle) "observation";\n } "observation";\n obsentry2.code where code = '33999-4' then {\n obsentry2.value as value -> tgt.clinicalStatus as clinicalstatus then {\n value as val -> clinicalstatus.coding = create('Coding') as coding then {\n val where (code = 'LA9041-0') -> coding.code = 'resolved' "code";\n val where (code = 'LA18632-2') -> coding.code = 'inactive' "code";\n val where (code = 'LA16666-2') -> coding.code = 'active' "code";\n val -> coding.system = 'http://terminology.hl7.org/CodeSystem/condition-clinical' "system";\n val.displayName as display -> coding.display = cast(display, 'string') "display";\n } "coding";\n obsentry2.text as text then {\n text.reference as reference -> clinicalstatus.text = (reference.value) "text";\n };\n } "clinicalstatus";\n } "clinicalStatus2";\n obsentry2.code where code = 'SEV' then {\n obsentry2.value -> tgt.severity;\n } "severity";\n };\n entryR2.act as act then {\n act.text as text -> tgt.note as note then {\n text.reference as reference -> note.text = (reference.value) "text";\n } "note";\n };\n } "entryR";\n } "EntryRelObsevation";\n } "entryR";\n}\n\ngroup FamilyMemberFunction(source src : organizer, target tgt : FamilyMemberHistory, target patient : patient) {\n src -> tgt.patient = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "patReference";\n src.id -> tgt.identifier;\n src.statusCode -> tgt.status;\n src.effectiveTime as effectiveTime -> tgt.date = create('date') as value then TSDate(effectiveTime, value) "date";\n src.subject as subject then {\n subject.relatedSubject as relatedSubject then {\n relatedSubject.code -> tgt.relationship "relationshipCode";\n relatedSubject.subject as subject -> tgt.sex as sex then {\n subject.administrativeGenderCode as administrativeGenderCode -> sex.coding as coding then {\n administrativeGenderCode.code as sexCode -> coding.code = translate(sexCode, '#cm-v3-administrative-gender', 'code') "gender";\n administrativeGenderCode -> coding.system = 'http://hl7.org/fhir/administrative-gender' "system";\n administrativeGenderCode.displayName as dn -> coding.display = dn;\n } "coding";\n };\n } "relatedSub";\n } "relationship";\n src.component as component -> tgt.condition as condition then {\n component.observation as observation then {\n observation.code -> condition.code;\n observation.text as text -> tgt.note as note then {\n text.reference as reference -> note.text = (reference.value) "value";\n } "reference";\n observation.statusCode -> tgt.status;\n // observation.effectiveTime as effectiveTime -> condition.onset = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n observation.value -> condition.outcome "codeable";\n observation.entryRelationship as entryR then {\n entryR.observation as obs then {\n obs where (code.code = '35267-4') then {\n obs.value as value -> condition.onset = create('Age') as Age then {\n value.value as valueAge -> Age.value = valueAge "age";\n value.unit as unit -> Age.code = unit;\n value.unit as unit -> Age.unit = unit;\n value -> Age.system = 'http://unitsofmeasure.org' "system";\n };\n } "insorgenza";\n obs where (code.code = '39016-1') then {\n obs.value as value -> tgt.deceased = create('Age') as Age then {\n value.value as valueAge -> Age.value = valueAge "age";\n value.unit as unit -> Age.code = unit;\n value.unit as unit -> Age.unit = unit;\n value -> Age.system = 'http://unitsofmeasure.org' "system";\n };\n } "death";\n } "obser";\n } "EntryRel";\n };\n };\n}\n\ngroup Practitioner(source src : performer, target tgt : Encounter, target bundle : Bundle) {\n src -> bundle.entry as e22, e22.request = create('BackboneElement') as request, request.method = 'PUT', e22.resource = create('Practitioner') as practitioner1 then {\n src.assignedEntity as assignedEntity -> tgt.participant as participant then {\n src.time as time where (value.exists()) -> participant.period = create('dateTime') as value then TSDateTime(time, value) "value1";\n src.time as time where (low.exists()) -> participant.period = create('Period') as value then IVLTSPeriod(time, value) "valuePeriod";\n // src.time as time -> participant.period as period then{\n assignedEntity.id as id -> practitioner1.identifier as identifier then {\n id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n id.extension as ext -> identifier.value = ext "ext";\n id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s;\n id.root as r then {\n id.extension as ext -> practitioner1.id = (r + '-' + ext) as uuid22, e22.fullUrl = append('https://example/Practitioner/', uuid22), participant.individual = create('Reference') as reference, reference.reference = ('https://example/Practitioner/' + %practitioner1.id) "id";\n } "r";\n } "identifier";\n assignedEntity.id as id where (root = '2.16.840.1.113883.2.9.4.3.2') then {\n id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID";\n } "2";\n assignedEntity.id as id where (root != '2.16.840.1.113883.2.9.4.3.2') then {\n id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID";\n } "diverso";\n assignedEntity -> practitioner1.meta as meta then {\n src -> meta.tag = create('Coding') as coding then {\n src -> coding.system = 'http://algoritmodiscoring' "system";\n src -> coding.code = 'ClinicalDocument/body/VisiteRicoveri/performer/' "code";\n } "coding";\n } "meta";\n assignedEntity.addr -> practitioner1.address;\n assignedEntity.telecom -> practitioner1.telecom;\n assignedEntity.assignedPerson as person then {\n person.name -> practitioner1.name;\n person.birthTime -> practitioner1.birthDate;\n } "partname";\n } "participant";\n } "resurceCreation";\n}\n\ngroup CarePlanFunction(source src : entry, target tgt : CarePlan, target patient : Patient, target encounter : Encounter, target bundle : Bundle) {\n src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n src -> tgt.status = 'unknown' "status";\n src -> tgt.intent = 'plan' "intent";\n src -> tgt.activity as activity then {\n src -> activity.detail as detail then {\n src.observation as observation then {\n observation then {\n observation -> detail.status = 'unknown' "status";\n observation -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Observation') as obs1, obs1.id = uuid() as uuid1, e1.fullUrl = append('https://example/Observation/', uuid1), request.url = 'Observation', detail.reasonReference = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obs1.id) then Observation(observation, patient, encounter, obs1, bundle) "obs1";\n } "activity";\n } "entryObs";\n src.substanceAdministration as substanceAdministration -> tgt.activity as activity then {\n substanceAdministration -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'POST', e2.resource = create('MedicationRequest') as medre1, medre1.id = uuid() as uuid2, e2.fullUrl = append('https://example/MedicationRequest/', uuid2), request.url = 'MedicationRequest', activity.reference = create('Reference') as reference, reference.reference = ('https://example/MedicationRequest/' + %medre1.id) then MedicationRequest(substanceAdministration, patient, encounter, medre1, bundle) "Terapie";\n } "entrySub";\n src.procedure as procedureC -> bundle.entry as e8, e8.request = create('BackboneElement') as request, request.method = 'POST', e8.resource = create('Procedure') as procedure, procedure.id = uuid() as uuid8, e8.fullUrl = append('https://example/Procedure/', uuid8), request.url = 'Procedure', activity.outcomeReference = create('Reference') as reference, reference.reference = ('https://example/Procedure/' + %procedure.id) then Procedure(procedureC, patient, encounter, procedure, bundle) "proc";\n src.encounter as encounterCDA -> bundle.entry as e3, e3.request = create('BackboneElement') as request, request.method = 'POST', e3.resource = create('Encounter') as encounterFHIR, encounterFHIR.id = uuid() as uuid3, e3.fullUrl = append('https://example/Encounter/', uuid3), request.url = 'Encounter', tgt.encounter = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounterFHIR.id) then {\n // encounterCDA -> encounterFHIR.partOf = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "encounterHeader";\n encounterCDA -> encounterFHIR.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "refPatient";\n encounterCDA.id -> encounterFHIR.identifier;\n encounterCDA.statusCode -> encounterFHIR.status;\n encounterCDA where statusCode.exists().not() -> encounterFHIR.status = 'unknown' "status";\n encounterCDA.code as code -> encounterFHIR.class as class then {\n code.code as code -> class.code = cast(code, 'string');\n code.codeSystem as system -> class.system = translate(system, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri');\n code.displayName as display -> class.display = cast(display, 'string');\n } "class";\n encounterCDA.text as text -> encounterFHIR.type as type then {\n text.reference as reference -> type.text = (reference.value) "value";\n };\n encounterCDA.effectiveTime as effectiveTime -> encounterFHIR.period = create('Period') as period then {\n effectiveTime -> period.start = create('dateTime') as start then TSDateTime(effectiveTime, start) "val";\n } "efft";\n } "viste";\n src.act as act then {\n act.id -> tgt.identifier;\n act.code -> activity.outcomeCodeableConcept;\n act.text as text -> activity.progress = create('Annotation') as progress then {\n text.reference as reference -> progress.text = (reference.value) "value";\n };\n act.effectiveTime as effectiveTime -> detail.scheduled = create('Period') as period then {\n effectiveTime -> period.start = create('dateTime') as start then TSDateTime(effectiveTime, start) "val";\n } "efft";\n act -> detail.status = 'completed' "status";\n };\n } "detail";\n } "activityIni";\n}\n\ngroup MedicationRequest(source src : substanceAdministration, target patient : Patient, target encounter : Encounter, target tgt : MedicationRequest, target bundle : Bundle) {\n // default + mandatory\n src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> tgt.encounter = create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %encounter.id) "reference";\n src -> tgt.intent = 'order' "intent";\n src where statusCode.exists().not() -> tgt.status = 'unknown' "st";\n src.statusCode as sc then {\n sc.code as cos -> tgt.status = translate(cos, '#MedicationStatusMap', 'code') "codeS";\n } "status";\n src.id -> tgt.identifier;\n src.text as txt -> tgt.note as note then {\n txt.reference as reference -> note.text = (reference.value) "text";\n } "note";\n src.effectiveTime : IVL_TS as eff -> tgt.dosageInstruction = create('Dosage') as dosage then {\n eff -> dosage.timing = create('Timing') as timing then {\n eff -> timing.repeat as rep then {\n eff -> rep.bounds = create('Period') as value then IVLTSPeriod(eff, value) "valuePeriod";\n } "rep";\n } "timing";\n } "period";\n src.effectiveTime : EIVL_TS as effe -> tgt.dosageInstruction = create('Dosage') as dosage then {\n effe -> dosage.timing = create('Timing') as timing then {\n effe -> timing.repeat as rep then {\n effe.eventCode as ev -> rep.when = (ev.code);\n } "rep";\n } "timing";\n } "period";\n src.effectiveTime : IVL_TS as eff -> tgt.dosageInstruction = create('Dosage') as dosage, dosage.timing = create('Timing') as timing, timing.event = (eff.value) "tim";\n src.effectiveTime : PIVL_TS as eff -> tgt.dosageInstruction = create('Dosage') as dosage then {\n eff -> dosage.timing = create('Timing') as timing then periodTiming(eff, timing) "cod";\n } "eff";\n src where (src.doseQuantity.exists() or src.rateQuantity.exists()) then {\n src -> tgt.dosageInstruction = create('Dosage') as dosageInstruction then {\n src.doseQuantity as doseQuant then {\n doseQuant.originalText as ot then {\n ot.reference -> dosageInstruction.text;\n } "ot";\n doseQuant -> dosageInstruction.doseAndRate as dosageRate then {\n doseQuant -> dosageRate.dose = create('Range') as d then {\n doseQuant -> d.low = create('SimpleQuantity') as l then {\n doseQuant.low as lo -> l.value = (lo.value);\n doseQuant.low as lo -> l.unit = (lo.unit);\n } "low";\n doseQuant -> d.high = create('SimpleQuantity') as h then {\n doseQuant.high as hi -> h.value = (hi.value);\n doseQuant.high as hi -> h.unit = (hi.unit);\n } "low";\n } "d";\n } "dosageRate";\n };\n src.rateQuantity as rateQuantity then {\n rateQuantity.originalText as ot then {\n ot.reference -> dosageInstruction.text;\n } "ot";\n rateQuantity -> dosageInstruction.doseAndRate as dosageRate then {\n rateQuantity -> dosageRate.rate = create('Range') as d then {\n rateQuantity -> d.low = create('SimpleQuantity') as l then {\n rateQuantity.low as lo -> l.value = (lo.value);\n rateQuantity.low as lo -> l.unit = (lo.unit);\n } "low";\n rateQuantity -> d.high = create('SimpleQuantity') as h then {\n rateQuantity.high as hi -> h.value = (hi.value);\n rateQuantity.high as hi -> h.unit = (hi.unit);\n } "high";\n } "r";\n } "dosageRate";\n } "rate";\n src.routeCode -> dosageInstruction.route "route";\n src.approachSiteCode -> dosageInstruction.site "site";\n src.targetSiteCode -> dosageInstruction.site "site";\n } "dosageIn";\n } "condition";\n src.consumable as consumable -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('Medication') as medication, medication.id = uuid() as uuid1, e1.fullUrl = append('https://example/Medication/', uuid1), request.url = 'Medication', tgt.medication = create('Reference') as medref, medref.reference = ('https://example/Medication/' + %medication.id) then Medication(src, medication, patient, bundle) "medication";\n src.entryRelationship as entryRelationship then {\n entryRelationship.supply as supply -> tgt.dispenseRequest as dispenseRequest then {\n supply.quantity as quantityCDA -> dispenseRequest.quantity as quantityFHIR then {\n quantityCDA -> quantityFHIR.value = (quantityCDA.value) "value";\n };\n };\n } "entryR";\n src.participant as participant then {\n participant then Practitioner(participant, tgt, bundle) "function";\n participant.effectiveTime -> tgt.authoredOn "autor";\n } "Partecipant";\n}\n\ngroup OrganizationAffiliation(source src : act, target patient : Patient, target enc : Encounter, target tgt : OrganizationAffiliation, target bundle : Bundle) {\n src.id -> tgt.identifier;\n // src.code -> tgt.specialty as specialty then{\n src.statusCode where code = 'active' -> tgt.active = true;\n src.statusCode where (code = 'active').not() -> tgt.active = false;\n src.effectiveTime as eff -> tgt.period;\n // src.code -> tgt.specialty;\n src -> tgt.specialty = create('CodeableConcept') as spec then {\n src.code as code then {\n code -> spec.coding = create('Coding') as cd then {\n code -> cd.code = (code.code) "code";\n code -> cd.display = (code.displayName) "code";\n code.codeSystem as r -> cd.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n } "cd";\n } "spec";\n src.entryRelationship as entry then {\n entry.act as a then {\n a.text as tx then {\n tx.reference as reff -> spec.text = (reff.value);\n } "ref";\n };\n } "entry";\n } "a";\n}\n\ngroup DiagnosticReportFunction(source src : organizer, target patient : Patient, target enc : Encounter, target tgt : DiagnosticReport, target bundle : Bundle) {\n src -> tgt.subject = create('Reference') as reference, reference.reference = ('https://example/Patient/' + %patient.id) "reference";\n // src -> tgt.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) "reference";\n src.code -> tgt.code;\n src.statusCode where code = 'completed' -> tgt.status = 'final';\n src.effectiveTime as eff where (value.exists()) -> tgt.effective = create('dateTime') as value then TSDateTime(eff, value) "value1";\n src.effectiveTime as eff where (low.exists()) -> tgt.effective = create('Period') as value then IVLTSPeriod(effectiveTime, value) "valuePeriod";\n src.component as component then {\n component.observation as observation -> bundle.entry as ei, ei.request = create('BackboneElement') as request, request.method = 'POST', ei.resource = create('Observation') as obsi, obsi.id = uuid() as uuidi, ei.fullUrl = append('https://example/Observation/', uuidi), request.url = 'Observation', tgt.result = create('Reference') as reference, reference.reference = ('https://example/Observation/' + %obsi.id) then Observation(observation, patient, enc, obsi, bundle) "hasMember";\n };\n}\n\ngroup EncounterFunction(source src : cdaElement, target patient : Patient, target encounter : Encounter, target tgt : Encounter, target bundle : Bundle) {\n src.id -> tgt.identifier;\n src.statusCode -> tgt.status;\n src where statusCode.exists().not() -> tgt.status = 'unknown' "status";\n src.code as code -> tgt.class as class then {\n code -> class.code = (code.code) "code";\n code -> class.display = (code.displayName) "display";\n code.codeSystem as r -> class.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n } "co";\n // src.effectiveTime as effective -> tgt.period as period then{\n src where effectiveTime.low.exists() or effectiveTime.high.exists() then {\n src.effectiveTime as eff -> tgt.period = create('Period') as period then IVLTSPeriod(eff, period);\n } "where";\n // effectiveTime = time-stamp\n src where effectiveTime.low.exists().not() or effectiveTime.high.exists().not() then {\n src.effectiveTime as effectivetime1 -> tgt.period = create('Period') as period then {\n effectivetime1 -> period.start = create('dateTime') as start then TSDateTime(effectivetime1, start) "val";\n } "efft";\n } "where";\n // src.effectiveTime as eff where (value.exists()) -> tgt.period = create('dateTime') as value then TSDateTime(eff, value) "value1";\n src.text as tx -> tgt.type as ty then {\n tx.reference as reff -> ty.text = (reff.value) "textType";\n };\n src.performer as performer -> tgt.participant as part then {\n performer -> part.period as period then {\n performer.time as time -> period.start as start then TSDateTime(time, start) "val";\n } "period";\n performer.assignedEntity as assentity -> bundle.entry as e1, e1.request = create('BackboneElement') as request, request.method = 'POST', e1.resource = create('PractitionerRole') as practitionerRole, practitionerRole.id = uuid() as uuid1, e1.fullUrl = append('https://example/PractitionerRole/', uuid1), request.url = 'PractitionerRole', tgt.participant = create('BackboneElement') as participant1, participant1.individual = create('Reference') as referencepart, referencepart.reference = ('https://example/PractitionerRole/' + %practitionerRole.id) then {\n assentity.code -> practitionerRole.code;\n assentity -> bundle.entry as e2, e2.request = create('BackboneElement') as request, request.method = 'PUT', e2.resource = create('Practitioner') as practitioner then {\n assentity -> practitioner.meta as meta then {\n assentity -> meta.tag = create('Coding') as coding then {\n assentity -> coding.system = 'http://algoritmodiscoring' "system";\n assentity -> coding.code = 'ClinicalDocument/body/encounter/performer' "code";\n } "coding";\n } "meta";\n assentity.id as id -> practitioner.identifier as identifier then {\n id.root as r -> identifier.system = translate(r, 'http://hl7.org/fhir/ConceptMap/special-oid2uri', 'uri') "root1";\n id.extension as ext -> identifier.value = ext then {\n assentity -> request.url = append('Practitioner?identifier=', ext) "UUID";\n } "ext";\n id.assigningAuthorityName as s -> identifier.assigner as a, a.display = s;\n id.root as r then {\n id.extension as ext -> practitioner.id = (r + '-' + ext) as uuid2, e2.fullUrl = append('https://example/Practitioner/', uuid2), practitionerRole.practitioner = create('Reference') as reference, reference.reference = ('https://example/Practitioner/' + %practitioner.id) "performer";\n } "r";\n } "identifier";\n assentity.id as id where (root = '2.16.840.1.113883.2.9.4.3.2') then {\n id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID";\n } "2";\n assentity.id as id where (root != '2.16.840.1.113883.2.9.4.3.2') then {\n id.extension as ext -> request.url = append('Practitioner?identifier=', ext) "UUID";\n } "2";\n assentity.addr -> practitioner.address;\n assentity.telecom -> practitioner.telecom;\n assentity.assignedPerson as person then {\n person.name -> practitioner.name;\n person.birthTime as birthTime then {\n birthTime.value as date -> practitioner.birthDate = truncate(date, 10);\n } "birth";\n } "name";\n } "assignedEntity";\n } "performer";\n } "01";\n}\n\n</pre>\n </div>"
},
"url" : "http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirPs",
"version" : "0.1.0",
"name" : "cda2fhirPs",
"status" : "draft",
"date" : "2025-03-28T14:53:59+00:00",
"publisher" : "HL7 Italy",
"contact" : [
{
"name" : "HL7 Italy",
"telecom" : [
{
"system" : "url",
"value" : "http://hl7.it"
}
]
}
],
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "IT",
"display" : "Italy"
}
]
}
],
"structure" : [
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/ClinicalDocument",
"mode" : "source",
"alias" : "ClinicalDocument"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/AssignedAuthor",
"mode" : "queried",
"alias" : "AssignedAuthor"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/AssignedEntity",
"mode" : "queried",
"alias" : "AssignedEntity"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/AssociatedEntity",
"mode" : "queried",
"alias" : "AssociatedEntity"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/CustodianOrganization",
"mode" : "queried",
"alias" : "CustodianOrganization"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/OrganizationPartOf",
"mode" : "queried",
"alias" : "OrganizationPartOf"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/Organization",
"mode" : "queried",
"alias" : "rapresentedOrganization"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/Section",
"mode" : "queried",
"alias" : "Section"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/PatientRole",
"mode" : "queried",
"alias" : "PatientRole"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/AD",
"mode" : "source",
"alias" : "AD"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode" : "target",
"alias" : "Bundle"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Composition",
"mode" : "produced",
"alias" : "Composition"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Patient",
"mode" : "produced",
"alias" : "Patient"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Encounter",
"mode" : "produced",
"alias" : "Encounter"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Person",
"mode" : "produced",
"alias" : "Patient"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/List",
"mode" : "produced",
"alias" : "List"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Practitioner",
"mode" : "produced",
"alias" : "Practitioner"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/Organization",
"mode" : "produced",
"alias" : "Organization"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/Act",
"mode" : "produced",
"alias" : "Act"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/IVL-PQ",
"mode" : "source",
"alias" : "IVL_PQ"
},
{
"url" : "http://hl7.org/fhir/cda/StructureDefinition/PQ",
"mode" : "source",
"alias" : "PQ"
},
{
"url" : "http://hl7.org/fhir/StructureDefinition/SimpleQuantity",
"mode" : "target",
"alias" : "SimpleQuantity"
}
],
"import" : [
"http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirDataTypes",
"http://hl7.it/fhir/cda2fhir/StructureMap/cda2fhirHeader"
],
"group" : [
{
"name" : "CdaToBundle",
"typeMode" : "none",
"input" : [
{
"name" : "cda",
"type" : "ClinicalDocument",
"mode" : "source"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
}
],
"rule" : [
{
"name" : "ClinicalDocumentToBody",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e"
},
{
"context" : "e",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e",
"contextType" : "variable",
"element" : "resource",
"variable" : "composition",
"transform" : "create",
"parameter" : [
{
"valueString" : "Composition"
}
]
},
{
"context" : "composition",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid1",
"transform" : "uuid"
},
{
"context" : "e",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Composition/"
},
{
"valueId" : "uuid1"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Composition"
}
]
},
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e2"
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "request",
"variable" : "requestPAT",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "requestPAT",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "PUT"
}
]
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "resource",
"variable" : "patient",
"transform" : "create",
"parameter" : [
{
"valueString" : "Patient"
}
]
},
{
"context" : "patient",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid2",
"transform" : "uuid"
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Patient/"
},
{
"valueId" : "uuid2"
}
]
},
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e3"
},
{
"context" : "e3",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e3",
"contextType" : "variable",
"element" : "resource",
"variable" : "encounter",
"transform" : "create",
"parameter" : [
{
"valueString" : "Encounter"
}
]
},
{
"context" : "encounter",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid3",
"transform" : "uuid"
},
{
"context" : "e3",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Encounter/"
},
{
"valueId" : "uuid3"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Encounter"
}
]
},
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e4"
},
{
"context" : "e4",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e4",
"contextType" : "variable",
"element" : "resource",
"variable" : "DocumentReference",
"transform" : "create",
"parameter" : [
{
"valueString" : "DocumentReference"
}
]
},
{
"context" : "DocumentReference",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid4",
"transform" : "uuid"
},
{
"context" : "e4",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/DocumentReference/"
},
{
"valueId" : "uuid4"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "DocumentReference"
}
]
}
],
"rule" : [
{
"name" : "cdatobundle",
"source" : [
{
"context" : "cda"
}
],
"dependent" : [
{
"name" : "ClinicalDocumentToBundle",
"variable" : [
"cda",
"patient",
"composition",
"encounter",
"bundle",
"DocumentReference"
]
}
]
},
{
"name" : "patient",
"source" : [
{
"context" : "cda",
"element" : "recordTarget",
"variable" : "recordTarget"
}
],
"rule" : [
{
"name" : "recPat",
"source" : [
{
"context" : "recordTarget",
"element" : "patientRole",
"variable" : "patient"
}
],
"rule" : [
{
"name" : "idfr",
"source" : [
{
"context" : "patient",
"element" : "id",
"variable" : "id"
}
],
"target" : [
{
"context" : "patient",
"contextType" : "variable",
"element" : "identifier",
"variable" : "identifier"
}
],
"rule" : [
{
"name" : "root1",
"source" : [
{
"context" : "id",
"element" : "root",
"variable" : "r"
}
],
"target" : [
{
"context" : "identifier",
"contextType" : "variable",
"element" : "system",
"transform" : "translate",
"parameter" : [
{
"valueId" : "r"
},
{
"valueString" : "http://hl7.org/fhir/ConceptMap/special-oid2uri"
},
{
"valueString" : "uri"
}
]
}
]
},
{
"name" : "value",
"source" : [
{
"context" : "id",
"element" : "extension",
"variable" : "ext1"
}
],
"target" : [
{
"context" : "identifier",
"contextType" : "variable",
"element" : "value",
"transform" : "copy",
"parameter" : [
{
"valueId" : "ext1"
}
]
}
]
},
{
"name" : "assigningAuthorityName",
"source" : [
{
"context" : "id",
"element" : "assigningAuthorityName",
"variable" : "s"
}
],
"target" : [
{
"context" : "identifier",
"contextType" : "variable",
"element" : "assigner",
"variable" : "a"
},
{
"context" : "a",
"contextType" : "variable",
"element" : "display",
"transform" : "copy",
"parameter" : [
{
"valueId" : "s"
}
]
}
]
}
]
},
{
"name" : "ext",
"source" : [
{
"context" : "patient",
"element" : "id",
"variable" : "id",
"condition" : "(root = '2.16.840.1.113883.2.9.4.3.2') or (root = '2.16.840.1.113883.2.9.4.3.7') or (root = '2.16.840.1.113883.2.9.4.3.3') or (root = '2.16.840.1.113883.2.9.4.3.17') or (root = '2.16.840.1.113883.2.9.4.3.18') or (root = '2.16.840.1.113883.2.9.2.10.4.1.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1.1') or (root = '2.16.840.1.113883.2.9.2.10.4.1') or (root = '2.16.840.1.113883.2.9.2.20.4.1') or (root = '2.16.840.1.113883.2.9.2.30.4.1') or (root = '2.16.840.1.113883.2.9.2.41.4.1') or (root = '2.16.840.1.113883.2.9.2.42.4.1') or (root = '2.16.840.1.113883.2.9.2.50.4.1') or (root = '2.16.840.1.113883.2.9.2.60.4.1') or (root = '2.16.840.1.113883.2.9.2.70.4.1') or (root = '2.16.840.1.113883.2.9.2.80.4.1') or (root = '2.16.840.1.113883.2.9.2.90.4.1') or (root = '2.16.840.1.113883.2.9.2.100.4.1') or (root = '2.16.840.1.113883.2.9.2.110.4.1') or (root = '2.16.840.1.113883.2.9.2.120.4.1') or (root = '2.16.840.1.113883.2.9.2.130.4.1') or (root = '2.16.840.1.113883.2.9.2.140.4.1') or (root = '2.16.840.1.113883.2.9.2.150.4.1') or (root = '2.16.840.1.113883.2.9.2.160.4.1') or (root = '2.16.840.1.113883.2.9.2.170.4.1') or (root = '2.16.840.1.113883.2.9.2.180.4.1') or (root = '2.16.840.1.113883.2.9.2.190.4.1') or (root = '2.16.840.1.113883.2.9.2.200.4.1') or (root = '2.16.840.1.113883.2.9.4.3.15')"
}
],
"rule" : [
{
"name" : "UUID",
"source" : [
{
"context" : "id",
"element" : "extension",
"variable" : "ext"
}
],
"target" : [
{
"context" : "requestPAT",
"contextType" : "variable",
"element" : "url",
"transform" : "append",
"parameter" : [
{
"valueString" : "Patient?identifier="
},
{
"valueId" : "ext"
}
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "ClinicalDocumentToBundle",
"typeMode" : "none",
"input" : [
{
"name" : "cda",
"type" : "ClinicalDocument",
"mode" : "source"
},
{
"name" : "patient",
"type" : "Patient",
"mode" : "target"
},
{
"name" : "composition",
"type" : "Composition",
"mode" : "target"
},
{
"name" : "encounter",
"type" : "Encounter",
"mode" : "target"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "DocumentReference",
"type" : "DocumentReference",
"mode" : "target"
}
],
"rule" : [
{
"name" : "finished",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "encounter",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "finished"
}
]
}
]
},
{
"name" : "coding",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "encounter",
"contextType" : "variable",
"element" : "class",
"variable" : "coding",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coding"
}
]
}
],
"rule" : [
{
"name" : "code",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "coding",
"contextType" : "variable",
"element" : "code",
"transform" : "copy",
"parameter" : [
{
"valueString" : "summary"
}
]
}
]
}
]
},
{
"name" : "id",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "id",
"transform" : "uuid"
}
]
},
{
"name" : "identifier",
"source" : [
{
"context" : "cda",
"element" : "id",
"variable" : "vvv"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "identifier",
"variable" : "vvv",
"transform" : "create"
}
]
},
{
"name" : "type",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "type",
"transform" : "copy",
"parameter" : [
{
"valueString" : "transaction"
}
]
}
]
},
{
"name" : "date",
"source" : [
{
"context" : "cda"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "timestamp",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "timestamp.now()"
}
]
}
],
"documentation" : "cda.effectiveTime -> bundle.timestamp;"
},
{
"name" : "composition",
"source" : [
{
"context" : "cda"
}
],
"dependent" : [
{
"name" : "ClinicalDocumentComposition",
"variable" : [
"cda",
"composition",
"patient",
"encounter",
"bundle",
"DocumentReference"
]
}
]
},
{
"name" : "diagnostic",
"source" : [
{
"context" : "cda",
"element" : "component",
"variable" : "component"
}
],
"rule" : [
{
"name" : "body",
"source" : [
{
"context" : "component",
"element" : "structuredBody",
"variable" : "body"
}
],
"rule" : [
{
"name" : "component",
"source" : [
{
"context" : "body",
"element" : "component",
"variable" : "component"
}
],
"rule" : [
{
"name" : "section",
"source" : [
{
"context" : "component",
"element" : "section",
"variable" : "srcSection"
}
],
"rule" : [
{
"name" : "code",
"source" : [
{
"context" : "srcSection",
"element" : "code"
}
],
"target" : [
{
"context" : "composition",
"contextType" : "variable",
"element" : "section",
"variable" : "tgtSection"
}
],
"dependent" : [
{
"name" : "ClinicalDocumentSection",
"variable" : [
"cda",
"srcSection",
"patient",
"tgtSection",
"bundle",
"encounter",
"composition"
]
}
]
}
]
}
]
}
]
}
]
}
]
},
{
"name" : "ClinicalDocumentSection",
"typeMode" : "none",
"input" : [
{
"name" : "cda",
"type" : "ClinicalDocument",
"mode" : "source"
},
{
"name" : "src",
"type" : "Section",
"mode" : "source"
},
{
"name" : "patient",
"type" : "Patient",
"mode" : "target"
},
{
"name" : "tgt",
"mode" : "target"
},
{
"name" : "bundle",
"type" : "Bundle",
"mode" : "target"
},
{
"name" : "enc",
"type" : "Encounter",
"mode" : "target"
},
{
"name" : "composition",
"type" : "Composition",
"mode" : "target"
}
],
"rule" : [
{
"name" : "title",
"source" : [
{
"context" : "src",
"element" : "title",
"variable" : "t"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "title",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "t.dataString"
}
]
}
]
},
{
"name" : "code",
"source" : [
{
"context" : "src",
"element" : "code",
"variable" : "vvv"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "code",
"variable" : "vvv",
"transform" : "create"
}
]
},
{
"name" : "entry",
"source" : [
{
"context" : "src",
"element" : "entry",
"variable" : "entry"
}
],
"rule" : [
{
"name" : "cdaText",
"source" : [
{
"context" : "src",
"element" : "text",
"variable" : "cdaText"
}
],
"target" : [
{
"context" : "tgt",
"contextType" : "variable",
"element" : "text",
"variable" : "fhirText"
}
],
"rule" : [
{
"name" : "narrativeStatus",
"source" : [
{
"context" : "cdaText"
}
],
"target" : [
{
"context" : "fhirText",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "generated"
}
]
}
]
},
{
"name" : "narrativeText",
"source" : [
{
"context" : "cdaText",
"variable" : "t"
}
],
"target" : [
{
"context" : "fhirText",
"contextType" : "variable",
"element" : "div",
"transform" : "copy",
"parameter" : [
{
"valueId" : "t"
}
]
}
]
}
]
},
{
"name" : "entryObs",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "(code = '30954-2')"
}
],
"rule" : [
{
"name" : "diagnostic",
"source" : [
{
"context" : "entry",
"element" : "organizer",
"variable" : "organizer"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e0"
},
{
"context" : "e0",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e0",
"contextType" : "variable",
"element" : "resource",
"variable" : "dia",
"transform" : "create",
"parameter" : [
{
"valueString" : "DiagnosticReport"
}
]
},
{
"context" : "dia",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid0",
"transform" : "uuid"
},
{
"context" : "e0",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/DiagnosticReport/"
},
{
"valueId" : "uuid0"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "DiagnosticReport"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/DiagnosticReport/' + %dia.id"
}
]
}
],
"dependent" : [
{
"name" : "DiagnosticReportFunction",
"variable" : [
"organizer",
"patient",
"enc",
"dia",
"bundle"
]
}
]
}
],
"documentation" : "sezioni che sono strutturate"
},
{
"name" : "entryObs",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "(code = '29762-2') or (code = '10162-6')"
}
],
"rule" : [
{
"name" : "obs1",
"source" : [
{
"context" : "entry",
"element" : "observation",
"variable" : "observation"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e1"
},
{
"context" : "e1",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e1",
"contextType" : "variable",
"element" : "resource",
"variable" : "obs1",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "obs1",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid1",
"transform" : "uuid"
},
{
"context" : "e1",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Observation/"
},
{
"valueId" : "uuid1"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Observation/' + %obs1.id"
}
]
}
],
"dependent" : [
{
"name" : "Observation",
"variable" : [
"observation",
"patient",
"enc",
"obs1",
"bundle"
]
}
]
}
]
},
{
"name" : "organizer",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "(code = '8716-3') or (code = '47420-5')"
}
],
"rule" : [
{
"name" : "obs2",
"source" : [
{
"context" : "entry",
"element" : "organizer",
"variable" : "organizer"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e2"
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "resource",
"variable" : "obs2",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "obs2",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid2",
"transform" : "uuid"
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Observation/"
},
{
"valueId" : "uuid2"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Observation/' + %obs2.id"
}
]
}
],
"dependent" : [
{
"name" : "ObservationOrganizer",
"variable" : [
"src",
"organizer",
"patient",
"enc",
"obs2",
"bundle"
]
}
]
},
{
"name" : "obs2",
"source" : [
{
"context" : "entry",
"element" : "observation",
"variable" : "organizer"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e2"
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "resource",
"variable" : "obs2",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "obs2",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid2",
"transform" : "uuid"
},
{
"context" : "e2",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Observation/"
},
{
"valueId" : "uuid2"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Observation/' + %obs2.id"
}
]
}
],
"dependent" : [
{
"name" : "ObservationOrganizer",
"variable" : [
"src",
"organizer",
"patient",
"enc",
"obs2",
"bundle"
]
}
]
}
]
},
{
"name" : "listaDeiProblemi",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '11450-4'"
}
],
"rule" : [
{
"name" : "condition",
"source" : [
{
"context" : "entry",
"element" : "act",
"variable" : "act"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e3"
},
{
"context" : "e3",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e3",
"contextType" : "variable",
"element" : "resource",
"variable" : "condition",
"transform" : "create",
"parameter" : [
{
"valueString" : "Condition"
}
]
},
{
"context" : "condition",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid3",
"transform" : "uuid"
},
{
"context" : "e3",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Condition/"
},
{
"valueId" : "uuid3"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Condition"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Condition/' + %condition.id"
}
]
}
],
"dependent" : [
{
"name" : "ConditionFunction",
"variable" : [
"act",
"condition",
"patient",
"enc",
"bundle"
]
}
]
}
]
},
{
"name" : "entryAct",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "(code = '48765-2')"
}
],
"rule" : [
{
"name" : "allergy",
"source" : [
{
"context" : "entry",
"element" : "act",
"variable" : "act"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e5"
},
{
"context" : "e5",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e5",
"contextType" : "variable",
"element" : "resource",
"variable" : "allergy",
"transform" : "create",
"parameter" : [
{
"valueString" : "AllergyIntolerance"
}
]
},
{
"context" : "allergy",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid5",
"transform" : "uuid"
},
{
"context" : "e5",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/AllergyIntolerance/"
},
{
"valueId" : "uuid5"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "AllergyIntolerance"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/AllergyIntolerance/' + %allergy.id"
}
]
}
],
"dependent" : [
{
"name" : "allergyFunction",
"variable" : [
"act",
"allergy",
"patient",
"enc"
]
}
]
}
]
},
{
"name" : "terapia",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '10160-0'"
}
],
"rule" : [
{
"name" : "TerapiaFarmacologica",
"source" : [
{
"context" : "entry",
"element" : "substanceAdministration",
"variable" : "subAdmin"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e6"
},
{
"context" : "e6",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e6",
"contextType" : "variable",
"element" : "resource",
"variable" : "medicationstatement",
"transform" : "create",
"parameter" : [
{
"valueString" : "MedicationStatement"
}
]
},
{
"context" : "medicationstatement",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid6",
"transform" : "uuid"
},
{
"context" : "e6",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/MedicationStatement/"
},
{
"valueId" : "uuid6"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "MedicationStatement"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/MedicationStatement/' + %medicationstatement.id"
}
]
}
],
"dependent" : [
{
"name" : "MedicationStatement",
"variable" : [
"subAdmin",
"medicationstatement",
"patient",
"enc",
"bundle"
]
}
]
}
]
},
{
"name" : "vacc",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '11369-6'"
}
],
"rule" : [
{
"name" : "immunization",
"source" : [
{
"context" : "entry",
"element" : "substanceAdministration",
"variable" : "subVACC"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e7"
},
{
"context" : "e7",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e7",
"contextType" : "variable",
"element" : "resource",
"variable" : "immunization",
"transform" : "create",
"parameter" : [
{
"valueString" : "Immunization"
}
]
},
{
"context" : "immunization",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid7",
"transform" : "uuid"
},
{
"context" : "e7",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Immunization/"
},
{
"valueId" : "uuid7"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Immunization"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Immunization/' + %immunization.id"
}
]
}
],
"dependent" : [
{
"name" : "Immunization",
"variable" : [
"subVACC",
"patient",
"enc",
"immunization",
"bundle"
]
}
]
}
]
},
{
"name" : "family",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '10157-6'"
}
],
"rule" : [
{
"name" : "family",
"source" : [
{
"context" : "entry",
"element" : "organizer",
"variable" : "organizer"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e12"
},
{
"context" : "e12",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e12",
"contextType" : "variable",
"element" : "resource",
"variable" : "familyMember",
"transform" : "create",
"parameter" : [
{
"valueString" : "FamilyMemberHistory"
}
]
},
{
"context" : "familyMember",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid12",
"transform" : "uuid"
},
{
"context" : "e12",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/FamilyMemberHistory/"
},
{
"valueId" : "uuid12"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "FamilyMemberHistory"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/FamilyMemberHistory/' + %familyMember.id"
}
]
}
],
"dependent" : [
{
"name" : "FamilyMemberFunction",
"variable" : [
"organizer",
"familyMember",
"patient"
]
}
]
}
]
},
{
"name" : "impianti",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '46264-8'"
}
],
"rule" : [
{
"name" : "protesi",
"source" : [
{
"context" : "entry",
"element" : "supply",
"variable" : "supply"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e8"
},
{
"context" : "e8",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e8",
"contextType" : "variable",
"element" : "resource",
"variable" : "procedure",
"transform" : "create",
"parameter" : [
{
"valueString" : "Procedure"
}
]
},
{
"context" : "procedure",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid8",
"transform" : "uuid"
},
{
"context" : "e8",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Procedure/"
},
{
"valueId" : "uuid8"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Procedure"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Procedure/' + %procedure.id"
}
]
}
],
"dependent" : [
{
"name" : "Procedure",
"variable" : [
"supply",
"patient",
"enc",
"procedure",
"bundle"
]
}
]
}
]
},
{
"name" : "trattamentiProcedure",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '47519-4'"
}
],
"rule" : [
{
"name" : "tratt",
"source" : [
{
"context" : "entry",
"element" : "procedure",
"variable" : "procedure"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e9"
},
{
"context" : "e9",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e9",
"contextType" : "variable",
"element" : "resource",
"variable" : "procedure2",
"transform" : "create",
"parameter" : [
{
"valueString" : "Procedure"
}
]
},
{
"context" : "procedure2",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid9",
"transform" : "uuid"
},
{
"context" : "e9",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Procedure/"
},
{
"valueId" : "uuid9"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Procedure"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Procedure/' + %procedure2.id"
}
]
}
],
"dependent" : [
{
"name" : "Procedure",
"variable" : [
"procedure",
"patient",
"enc",
"procedure2",
"bundle"
]
}
]
}
]
},
{
"name" : "visiteRicoveri",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '46240-8'"
}
],
"rule" : [
{
"name" : "encounter",
"source" : [
{
"context" : "entry",
"element" : "encounter",
"variable" : "encounter"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e9"
},
{
"context" : "e9",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e9",
"contextType" : "variable",
"element" : "resource",
"variable" : "encounterF",
"transform" : "create",
"parameter" : [
{
"valueString" : "Encounter"
}
]
},
{
"context" : "encounterF",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid9",
"transform" : "uuid"
},
{
"context" : "e9",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Encounter/"
},
{
"valueId" : "uuid9"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Encounter"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Encounter/' + %encounterF.id"
}
]
}
],
"dependent" : [
{
"name" : "EncounterFunction",
"variable" : [
"encounter",
"patient",
"enc",
"encounterF",
"bundle"
]
}
],
"documentation" : "entry.encounter as encounter -> enc then{"
}
]
},
{
"name" : "esenzioni",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '57827-8'"
}
],
"rule" : [
{
"name" : "esen",
"source" : [
{
"context" : "entry",
"element" : "act",
"variable" : "act"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e13"
},
{
"context" : "e13",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e13",
"contextType" : "variable",
"element" : "resource",
"variable" : "coverage",
"transform" : "create",
"parameter" : [
{
"valueString" : "Coverage"
}
]
},
{
"context" : "coverage",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid13",
"transform" : "uuid"
},
{
"context" : "e13",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Coverage/"
},
{
"valueId" : "uuid13"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Coverage"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Coverage/' + %coverage.id"
}
]
}
],
"dependent" : [
{
"name" : "Coverage",
"variable" : [
"act",
"patient",
"enc",
"coverage",
"bundle"
]
}
]
}
]
},
{
"name" : "retiPatologia",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = 'PSSIT99'"
}
],
"rule" : [
{
"name" : "OrgAffiliation",
"source" : [
{
"context" : "entry",
"element" : "act",
"variable" : "act"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e14"
},
{
"context" : "e14",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e14",
"contextType" : "variable",
"element" : "resource",
"variable" : "affiliation",
"transform" : "create",
"parameter" : [
{
"valueString" : "OrganizationAffiliation"
}
]
},
{
"context" : "affiliation",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid14",
"transform" : "uuid"
},
{
"context" : "e14",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/OrganizationAffiliation/"
},
{
"valueId" : "uuid14"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "OrganizationAffiliation"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/OrganizationAffiliation/' + %affiliation.id"
}
]
}
],
"dependent" : [
{
"name" : "OrganizationAffiliation",
"variable" : [
"act",
"patient",
"enc",
"affiliation",
"bundle"
]
}
]
}
]
}
]
},
{
"name" : "esiste",
"source" : [
{
"context" : "src",
"condition" : "src.entry.exists()"
}
],
"rule" : [
{
"name" : "raccoglitore",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '18776-5'"
}
],
"rule" : [
{
"name" : "pianiCura",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e11"
},
{
"context" : "e11",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e11",
"contextType" : "variable",
"element" : "resource",
"variable" : "careplan",
"transform" : "create",
"parameter" : [
{
"valueString" : "CarePlan"
}
]
},
{
"context" : "careplan",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid11",
"transform" : "uuid"
},
{
"context" : "e11",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/CarePlan/"
},
{
"valueId" : "uuid11"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "CarePlan"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/CarePlan/' + %careplan.id"
}
]
}
],
"rule" : [
{
"name" : "prestazioni",
"source" : [
{
"context" : "src",
"element" : "entry",
"variable" : "entry"
}
],
"dependent" : [
{
"name" : "CarePlanFunction",
"variable" : [
"entry",
"careplan",
"patient",
"enc",
"bundle"
]
}
]
}
]
}
]
}
]
},
{
"name" : "code",
"source" : [
{
"context" : "src",
"condition" : "src.entry.exists().not()"
}
],
"rule" : [
{
"name" : "familyraccoglitore",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '10157-6'"
}
],
"rule" : [
{
"name" : "family",
"source" : [
{
"context" : "src",
"element" : "text",
"variable" : "text"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e12"
},
{
"context" : "e12",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e12",
"contextType" : "variable",
"element" : "resource",
"variable" : "familyMember",
"transform" : "create",
"parameter" : [
{
"valueString" : "FamilyMemberHistory"
}
]
},
{
"context" : "familyMember",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid12",
"transform" : "uuid"
},
{
"context" : "e12",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/FamilyMemberHistory/"
},
{
"valueId" : "uuid12"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "FamilyMemberHistory"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/FamilyMemberHistory/' + %familyMember.id"
}
]
}
],
"rule" : [
{
"name" : "reference",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "familyMember",
"contextType" : "variable",
"element" : "patient",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Patient/' + %patient.id"
}
]
}
]
},
{
"name" : "statusS",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "familyMember",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "health-unknown"
}
]
}
]
},
{
"name" : "reference",
"source" : [
{
"context" : "text"
}
],
"target" : [
{
"context" : "familyMember",
"contextType" : "variable",
"element" : "note",
"variable" : "note"
}
],
"rule" : [
{
"name" : "reference",
"source" : [
{
"context" : "text",
"variable" : "t"
}
],
"target" : [
{
"context" : "note",
"contextType" : "variable",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueId" : "t"
}
]
}
]
}
]
},
{
"name" : "medication",
"source" : [
{
"context" : "text"
}
],
"target" : [
{
"context" : "familyMember",
"contextType" : "variable",
"element" : "relationship",
"variable" : "relation",
"transform" : "create",
"parameter" : [
{
"valueString" : "CodeableConcept"
}
]
}
],
"rule" : [
{
"name" : "text",
"source" : [
{
"context" : "text",
"variable" : "txt"
}
],
"target" : [
{
"context" : "relation",
"contextType" : "variable",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueId" : "txt"
}
]
}
]
}
]
}
]
}
],
"documentation" : "Anmanesi Familiare narrativa"
},
{
"name" : "raccoglitore",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "code = '18776-5'"
}
],
"rule" : [
{
"name" : "pianiCura",
"source" : [
{
"context" : "src",
"element" : "text",
"variable" : "text"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e11"
},
{
"context" : "e11",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e11",
"contextType" : "variable",
"element" : "resource",
"variable" : "careplan",
"transform" : "create",
"parameter" : [
{
"valueString" : "CarePlan"
}
]
},
{
"context" : "careplan",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid11",
"transform" : "uuid"
},
{
"context" : "e11",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/CarePlan/"
},
{
"valueId" : "uuid11"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "CarePlan"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/CarePlan/' + %careplan.id"
}
]
}
],
"rule" : [
{
"name" : "reference",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "careplan",
"contextType" : "variable",
"element" : "subject",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Patient/' + %patient.id"
}
]
}
]
},
{
"name" : "status",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "careplan",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "active"
}
]
}
],
"documentation" : "src-> careplan.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) \"reference\";"
},
{
"name" : "intent",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "careplan",
"contextType" : "variable",
"element" : "intent",
"transform" : "copy",
"parameter" : [
{
"valueString" : "order"
}
]
}
]
},
{
"name" : "reference",
"source" : [
{
"context" : "text"
}
],
"target" : [
{
"context" : "careplan",
"contextType" : "variable",
"element" : "note",
"variable" : "note"
}
],
"rule" : [
{
"name" : "reference",
"source" : [
{
"context" : "text",
"variable" : "t"
}
],
"target" : [
{
"context" : "note",
"contextType" : "variable",
"element" : "text",
"transform" : "copy",
"parameter" : [
{
"valueId" : "t"
}
]
}
]
}
]
}
]
}
],
"documentation" : "Piano di cura narrativa"
},
{
"name" : "narrative",
"source" : [
{
"context" : "src",
"element" : "code",
"condition" : "(code = '30954-2') or (code = '29762-2') or (code = '8716-3') or (code = '47420-5') or (code = '42348-3')"
}
],
"rule" : [
{
"name" : "txtsec",
"source" : [
{
"context" : "src",
"element" : "text",
"variable" : "text"
}
],
"target" : [
{
"context" : "bundle",
"contextType" : "variable",
"element" : "entry",
"variable" : "e13"
},
{
"context" : "e13",
"contextType" : "variable",
"element" : "request",
"variable" : "request",
"transform" : "create",
"parameter" : [
{
"valueString" : "BackboneElement"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "method",
"transform" : "copy",
"parameter" : [
{
"valueString" : "POST"
}
]
},
{
"context" : "e13",
"contextType" : "variable",
"element" : "resource",
"variable" : "obs1",
"transform" : "create",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "obs1",
"contextType" : "variable",
"element" : "id",
"variable" : "uuid13",
"transform" : "uuid"
},
{
"context" : "e13",
"contextType" : "variable",
"element" : "fullUrl",
"transform" : "append",
"parameter" : [
{
"valueString" : "https://example/Observation/"
},
{
"valueId" : "uuid13"
}
]
},
{
"context" : "request",
"contextType" : "variable",
"element" : "url",
"transform" : "copy",
"parameter" : [
{
"valueString" : "Observation"
}
]
},
{
"context" : "tgt",
"contextType" : "variable",
"element" : "entry",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Observation/' + %obs1.id"
}
]
}
],
"rule" : [
{
"name" : "reference",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "obs1",
"contextType" : "variable",
"element" : "subject",
"variable" : "reference",
"transform" : "create",
"parameter" : [
{
"valueString" : "Reference"
}
]
},
{
"context" : "reference",
"contextType" : "variable",
"element" : "reference",
"transform" : "evaluate",
"parameter" : [
{
"valueString" : "'https://example/Patient/' + %patient.id"
}
]
}
]
},
{
"name" : "obsst",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "obs1",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "preliminary"
}
]
}
],
"documentation" : "src -> obs1.encounter=create('Reference') as reference, reference.reference = ('https://example/Encounter/' + %enc.id) \"reference\";"
},
{
"name" : "obscde",
"source" : [
{
"context" : "src",
"element" : "code",
"variable" : "vvv"
}
],
"target" : [
{
"context" : "obs1",
"contextType" : "variable",
"element" : "code",
"variable" : "vvv",
"transform" : "create"
}
]
},
{
"name" : "statusS",
"source" : [
{
"context" : "src"
}
],
"target" : [
{
"context" : "obs1",
"contextType" : "variable",
"element" : "status",
"transform" : "copy",
"parameter" : [
{
"valueString" : "final"
}
]
}
]
},
{
"name" : "narrative",
"source" : [
{
"context" : "text"
}
],
"target" : [
{
"context" : "obs1",
"contextType" : "variable",
"element" : "note",
"variable" : "note"
}
],
"rule" : [
{
"name" : "note",
"source" : [
{
"context" : "text",
"variable" : "t"
}
],
"target" : [
{
"context" : "note",
"contextType" : "variable",
"element" : "text",
"variable" : "textNote",
"transform" : "create",
"parameter" : [
{
"valueString" : "string"
}
]
}
],
"dependent" : [
{
"name" : "EDstring",
"variable" : [
"t",
"textNote"
]
}
]
}
]
}
]
}
],
"documentation" : "sezioni che sono narrative"
}
]
},
{
"name" : "component",
"source" : [
{
"context" : "src",
"element" : "component",
"variable" : "component"
&